委派代理管理账户管理config
本文介绍如何使用AWS Organizations集中管理AWS Config的跨账户配置
前提条件
使用管理账户,或者也叫payer账户,只有管理账户才能够开启组织级别的config。
首先确保您已经设置了AWS Organizations:
# 检查Organizations状态
aws organizations describe-organization
1. 创建允许整个组织写入的S3存储桶
# 创建S3存储桶用于Config数据,注意修改存储桶的名称和存储桶的region
aws s3 mb s3://your-config-bucket-name --region us-east-1
# 设置存储桶策略允许Config写入
aws s3api put-bucket-policy \
--bucket your-config-bucket-name \
--policy file://config-bucket-policy.json
存储桶策略示例 (config-bucket-policy.json):
organizationID替换成你自己的组织ID;
your-config-bucket-name替换成你的config存储桶名称。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AWSConfigBucketPermissionsCheck",
"Effect": "Allow",
"Principal": {
"Service": "config.amazonaws.com"
},
"Action": [
"s3:GetBucketAcl",
"s3:ListBucket",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::your-config-bucket-name",
"arn:aws:s3:::your-config-bucket-name/*"
],
"Condition": {
"StringEquals": {
"aws:SourceOrgID": "o-organizationID"
}
}
}
]
}
2. 启用 AWS Config 对 AWS Organizations 的访问
从您的组织管理帐户运行以下命令:
aws organizations enable-aws-service-access --service-principal=config.amazonaws.com
使用以下命令验证 enable-aws-service-access 命令是否完成:
aws organizations list-aws-service-access-for-organization
在 EnabledServicePrincipals 下,您应该看到 config.amazonaws.com 。
4. 为 AWS Config 注册委派管理员账户
要从非管理账户设置聚合器,您必须注册一个委托管理员账户,该账户是您组织的成员账户。从主账户中,使用 RegisterDelegatedAdministrator 操作注册委托管理员。在以下 AWS CLI 命令中,将 MemberAccountID 替换为相应的委托管理员账户 ID。
aws organizations register-delegated-administrator --service-principal config.amazonaws.com --account-id MemberAccountID
注意 :管理账户可以为 AWS Config(config.amazonaws.com)分配的委派管理员的最大数量为 3。
运行以下命令来验证委派管理员是否已从管理帐户成功注册:
aws organizations list-delegated-administrators --service-principal=config.amazonaws.com
您应该看到类似以下内容的输出:
{
"DelegatedAdministrators": [
{
"Id": "MemberAccountID",
"Arn": "arn:aws:organizations::MemeberAccountID:account/o-**********/DelegatedAdministratorAccountID",
"Email": "Email_ID_MemberAccount",
"Name": "name",
"Status": "ACTIVE",
"JoinedMethod": "INVITED",
"JoinedTimestamp": 1604867734.48,
"DelegationEnabledDate": 1607020986.801
}
]
}
3. 使用委派管理员账户设置聚合器
前面的部分配置好以后就可以使用委派的账户设置config的聚合器了。
需要注意的是,虽然聚合配置好了,但是并不意味着所有组织内的其他账户都开启了config,能够看到config检查的结果了,需要每个账户每个region开启config才可以。也可以通过使用AWS Systems Manager Quick Setup批量开启config:https://aws.amazon.com/blogs/mt/managing-configuration-compliance-across-your-organization-with-aws-systems-manager-quick-setup/
# 创建交付通道
aws configservice put-delivery-channel \
--delivery-channel name=default,s3BucketName=your-config-bucket-name \
--region us-east-1
# 创建配置记录器
aws configservice put-configuration-recorder \
--configuration-recorder name=default,roleARN=arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):role/aws-service-role/config.amazonaws.com/AWSServiceRoleForConfig,recordingGroup='{allSupported=true,includeGlobalResourceTypes=true}' \
--region us-east-1
# 启动配置记录器
aws configservice start-configuration-recorder \
--configuration-recorder-name default \
--region us-east-1
# 创建组织聚合器收集所有成员账户数据
aws configservice put-configuration-aggregator \
--configuration-aggregator-name OrganizationConfigAggregator \
--organization-aggregation-source '{
"RoleArn": "arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):role/aws-service-role/config.amazonaws.com/AWSServiceRoleForConfig",
"AwsRegions": ["us-east-1", "us-west-2"],
"AllAwsRegions": false
}' \
--region us-east-1
4. 验证部署
# 检查聚合器状态
aws configservice describe-configuration-aggregators \
--configuration-aggregator-names OrganizationConfigAggregator
# 查看合规性摘要
aws configservice get-aggregate-compliance-summary \
--configuration-aggregator-name OrganizationConfigAggregator
参考资料
https://aws.amazon.com/blogs/mt/org-aggregator-delegated-admin/
最后更新于