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 角色