委派代理管理账户管理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的聚合器了。

# 创建交付通道
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/

最后更新于