2015-05-27 2 views
3

Согласно Hazelcast manual, для использования автоматического обнаружения EC2 в конфигурационном файле должны быть предоставлены учетные данные AWS. Вместо использования ключей долгосрочного доступа, есть способ для Hazelcast получить временные полномочия, при размещении на EC2 например, запущенном в IAM роли (в AWS лучшей практика "Use Temporary Security Credentials (IAM Roles) Instead of Long-Term Access Keys")Значения AWS для автоматического обнаружения EC2

ответ

0

В настоящее время Hazelcast пока не поддерживает аутентификацию IAM ролей но это планируется реализовать после открытия SPI нового открытия.

+0

Каковы временные рамки для этого? – Boris

+0

Я предполагаю, что оба будут в 3,6 (когда это будет ;-)) – noctarius

4

Мне потребовалось некоторое время, чтобы найти нужную информацию, когда я это сделал. И честно явно указывая IP-адреса, работает так же хорошо, если только ваш кластер состоит из сотен узлов, чтобы набирать все из них вручную.

Задание пары имени/знака AWS необязательно. Я немного параноик. Я могу ошибочно присоединиться к другому кластеру, и всегда лучше явно создать такую ​​группу ресурсов (сервера).

Сначала вам нужно создать пользователя IAM с минимальными разрешениями, требуемыми Hazelcast. Очевидно, что вы не хотите использовать учетные данные пользователя root для этого.

Использование консоли AWS. Это находится в раскрывающемся списке вашего имени пользователя (где настройки учетной записи) в верхнем правом углу. Нажмите «Учетные данные безопасности», затем «Группы». Создание группы с помощью следующей политики:

{ 
    "Version": "xxxxxxx", 
    "Statement": [ 
    { 
     "Sid": "xxxxxx", 
     "Effect": "Allow", 
     "Action": [ 
     "ec2:DescribeInstances" 
     ], 
     "Resource": [ 
     "*" 
     ] 
    } 
    ] 
} 

Как вы можете видеть, единственное разрешение, Hazelcast нуждается «DescribeInstances». Я нашел это случайно - глубоко внутри одного из футов Фуада Маликова. 0 & Нити.

Остальное тривиально. Создайте пользователя IAM, например. «hazelcast» с этой группой безопасности и загрузить (экспортировать) свои учетные данные, которые вы должны добавить в свою конфигурацию Hazelcast, как показано ниже. Я использую Spring, но есть одно к одному сопоставление с классическим файлом конфигурации Hazelcast. Или вы можете установить эти свойства программно - что Spring по сути делает для меня.

<property name="properties"> 
    <props> 
     <prop key="hazelcast.icmp.enabled">true</prop> 
    </props> 
</property> 
<property name="join"> 
    <bean class="com.hazelcast.config.JoinConfig"> 
     <property name="multicastConfig"> 
      <bean class="com.hazelcast.config.MulticastConfig"> 
       <property name="enabled" value="false"/> 
      </bean> 
     </property> 
     <property name="tcpIpConfig"> 
      <bean class="com.hazelcast.config.TcpIpConfig"> 
       <property name="enabled" value="false"/> 
      </bean>  
     </property> 
     <property name="awsConfig"> 
      <bean class="com.hazelcast.config.AwsConfig"> 
       <property name="enabled" value="true"/> 
       <property name="region" value="us-west-2"/> 
       <property name="accessKey" value="zzzzzzz"/> 
       <property name="secretKey" value="yyyyyyy"/> 
       <property name="tagKey" value="your-instance-tag-key"/> 
       <property name="tagValue" value="your-instance-tag-value"/> 
      </bean> 
     </property> 
</property> 
+0

Жаль, когда такая важная информация даже не упоминается в специальном руководстве Hazelcast AWS! – mohamnag

+1

Mohamnag, упоминается в модуле AWS readme https://github.com/hazelcast/hazelcast-aws#policy-for-iam-user –

Смежные вопросы