跳转至

AWS 客户端的多种认证方式

脚本市场支持多种 AWS 客户端认证方式,用户通过配置 account 参数完成授权,下文对各种认证代码示例进行解释。

1. IAM 用户本身拥有访问资源的权限

代码示例

Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
# Please fill in the following configuration according to the actual situation
# For details, please refer to:https://func.guance.com/doc/script-market-guance-aws-ec2/

# AWS AK
account = {
    "ak_id"    : "<AWS AK ID>",
    "ak_secret": "<AWS AK SECRET>",
}

# collector configuration
collector_configs = {
    'regions': ['cn-northwest-1']
}

###### Do not modify the following content #####
from guance_integration__runner import Runner
import guance_aws_ec2__main as main

@DFF.API('AWS-EC2 Collection', timeout=3600, fixed_crontab='*/15 * * * *')
def run():
    Runner(main.DataCollector(account, collector_configs)).run()

account 字段解释

  • ak_id:由用户创建访问密钥 access key(属长期凭证)
  • ak_secret:由用户创建访问密钥 access secret(属长期凭证)

2. IAM 用户带入角色(使用 STS)

代码示例

Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Please fill in the following configuration according to the actual situation
# For details, please refer to:https://func.guance.com/doc/script-market-guance-aws-ec2/

# AWS AK
account = {
    "ak_id"            : "<AWS AK ID>",
    "ak_secret"        : "<AWS AK SECRET>",
    "assume_role_arn"  : "<AWS ASSUME ROLE ARN>",
    "role_session_name": "<AWS ROLE SESSION NAME>"
}

# collector configuration
collector_configs = {
    'regions': ['cn-northwest-1']
}

###### Do not modify the following content #####
from guance_integration__runner import Runner
import guance_aws_ec2__main as main

@DFF.API('AWS-EC2 Collection', timeout=3600, fixed_crontab='*/15 * * * *')
def run():
    Runner(main.DataCollector(account, configs=collector_configs)).run()

account 字段解释

  • ak_id:同上,必选。
  • ak_secret:同上,必选。
  • assume_role_arn:拥有访问资源权限的角色 ARN (Amazon Resource Name),必选。
  • role_session_name:角色会话名称(AWS 中的解释: 使用此字符串值可在不同主体使用角色时标识会话。为了安全起见,管理员可以在 AWS CloudTrail 日志 中查看此字段,以了帮助识别已在 AWS 中执行操作的人员。您的管理员可能会要求您在代入角色时指定 IAM 用户名作为会话名称。有关更多信息,请参阅 sts:RoleSessionName。),必选。

3. 用户开启多重身份认证(MFA)

代码示例

Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# Please fill in the following configuration according to the actual situation
# For details, please refer to:https://func.guance.com/doc/script-market-guance-aws-ec2/

# AWS AK
account = {
    "ak_id"            : "<AWS AK ID>",
    "ak_secret"        : "<AWS AK SECRET>",
    "assume_role_arn"  : "<AWS ASSUME ROLE ARN>",
    "role_session_name": "<AWS ROLE SESSION NAME>",
    "serial_number"    : "<MFA DEVICE NUMBER>",
    "token_code"       : "<MFA TOTP>",
}

# collector configuration
collector_configs = {
    'regions': ['cn-northwest-1']
}

###### Do not modify the following content #####
from guance_integration__runner import Runner
import guance_aws_ec2__main as main

@DFF.API('AWS-EC2 Collection', timeout=3600, fixed_crontab='*/15 * * * *')
def run():
    Runner(main.DataCollector(account, configs=collector_configs)).run()

account 字段解释

  • ak_id:同上,必选。
  • ak_secret:同上,必选。
  • assume_role_arn:同上,可选。
  • role_session_name:同上,可选。
  • serial_number:MFA 设备的标识符
  • token_code:MFA 设备提供的一次性代码

访问受 MFA 条件的策略所保护的资源,可以带入角色,也可以不用带入。示例中是带入角色的方式,如果不需要可以将 assume_role_arn、role_session_name 字段去掉

4. 适用于 Amazon EC2 的 IAM 角色认证

Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
# Please fill in the following configuration according to the actual situation
# For details, please refer to:https://func.guance.com/doc/script-market-guance-aws-ec2/

account = {
    "extra_tags": {
        "account_name": "role for ec2", # Your Account Name
    }
}

# collector configuration
collector_configs = {
    'regions': ['cn-northwest-1']
}

###### Do not modify the following content #####
from guance_integration__runner import Runner
import guance_aws_ec2__main as main

@DFF.API('AWS-EC2 Collection', timeout=3600, fixed_crontab='*/15 * * * *')
def run():
    Runner(main.DataCollector(account, configs=collector_configs)).run()

account 字段解释

使用 EC2 带入 IAM 角色认证的方式不需要配置 AK 相关信息,如果您想添加一些额外的 tags,依然可以配置在 extra_tags 中。

5. 常见问题

  • 如何确定账号权限策略

用户开启采集器,需要有访问资源的权限,权限策略可以参考对应资源采集器文档「IAM 策略权限」部分,还可以使用 AWS 托管策略“ReadOnlyAccess” 它提供针对所有 AWS 服务和资源的只读访问权限,满足大多数采集器的权限需求(如不满足请以对应采集器文档为准)。

X. 附录

AWS 访问密钥

AWS 请求临时安全凭证

AWS 多重身份认证

托管策略与内联策略

ReadOnlyAccess 托管策略

适用于 Amazon EC2 的 IAM 角色