Могу ли я заменить ключи aws ролью IAM в .aws / credentials для использования boto3? - PullRequest
0 голосов
/ 17 мая 2018

Я пытался использовать роль как:

~/.aws/credentials
[default]
role_arn=arn:aws:iam::xxxxxxx:role/yyyy

, но я получаю сообщение об ошибке:

Partial credentials found in assume-role, missing: source_profile or credential_source

, поэтому кажется, что роль IAM не может заменить

[default]
aws_access_key_id = AAAAAAAAAAAAAAAAAAAAAAAA
aws_secret_access_key =  BBBBBBBBBBBBBBBBBBBBBBBBBBB

поскольку согласно http://boto3.readthedocs.io/en/latest/guide/configuration.html

# In ~/.aws/credentials:
[development]
aws_access_key_id=foo
aws_access_key_id=bar

# In ~/.aws/config
[profile crossaccount]
role_arn=arn:aws:iam:...
source_profile=development

мне все равно придется использовать ключи, которые могут представлять угрозу безопасности, даже если они не используются в коде

Есть ли способ использоватьboto3 с правами администратора без использования учетных данных API aws?

в общем:

  1. Свяжите роль «admin» с экземпляром ec2, который вы собираетесь использовать для запуска ваших скриптов boto3
  2. Убедитесь, что выглядит хорошо.$curl <a href="http://169.254.169.254/latest/meta-data/iam/security-credentials/" rel="nofollow noreferrer">http://169.254.169.254/latest/meta-data/iam/security-credentials/</a></li> <li><p>test boto3 script</p> <p>#!/usr/bin/env python import boto3<br> ec2_client = boto3.client('ec2')<br> def main(): vpcs = ec2_client.describe_vpcs() for vpc_info in vpcs['Vpcs']: print(vpc_info['VpcId'])<br> if <strong>name</strong> == "<strong>main</strong>": main()

Я столкнулся с Приложением на github, которое решает эту проблему:

https://github.com/AdRoll/hologram

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Если у вас есть роль, прикрепленная к экземпляру EC2, вы можете использовать:

~ / .aws / config

[default]
credential_source=Ec2InstanceMetadata

https://docs.aws.amazon.com/cli/latest/topic/config-vars.html

credential_source - поставщик учетных данных, используемый для получения учетных данных для начального вызова предположительной роли.Этот параметр не может быть предоставлен вместе с source_profile.Допустимые значения:

Environment для извлечения учетных данных источника из переменных среды.

Ec2InstanceMetadata для использования роли экземпляра EC2 в качестве учетных данных источника.

EcsContainer дляиспользуйте учетные данные контейнера ECS в качестве исходных учетных данных.


0 голосов
/ 17 мая 2018

Вы не можете предоставить только роль ARN.Одного этого недостаточно.Вам необходимо предоставить source_profile, который предоставляет учетные данные для принятия роли, указанной ARN.

См .: Предположим, поставщик роли

  • role_arn- ARN роли, которую вы хотите принять.
  • source_profile - Профиль boto3, содержащий учетные данные, которые мы должны использовать для начального вызова AssumeRole.

Если выне требуется аутентификация MFA, тогда вам нужно только указать role_arn и source_profile.

...