AWS Config
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

向 AWS Config 用户授予自定义权限

AWS Config 策略向使用 AWS Config 的用户授予权限。如果您需要向用户授予不同权限,可将 AWS Config 策略附加到 IAM 组或用户。您可以编辑策略,使之包括或排除特定权限。您还可以创建自己的自定义策略。策略是一些 JSON 文档,它们定义了允许用户执行的操作以及允许用户对哪些资源执行这些操作。

只读访问权限

以下示例展示了一个 AWS 托管策略 AWSConfigUserAccess,该策略授予对 AWS Config 的只读访问权。此策略还授予了读取 Amazon S3 存储桶中的对象的权限,而不是创建或删除这些对象的权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "config:Get*", "config:Describe*", "config:Deliver*", "config:List*", "tag:GetResources", "tag:GetTagKeys", "cloudtrail:DescribeTrails", "cloudtrail:GetTrailStatus", "cloudtrail:LookupEvents" ], "Resource": "*" } ] }

在这些策略语句中,Effect 元素指定是允许还是拒绝操作。Action 元素列出了允许用户执行的特定操作。Resource 元素列出允许用户对其执行这些操作的 AWS 资源。对于控制对 AWS Config 操作的访问的策略,Resource 元素始终设置为 *(一个表示“所有资源”的通配符)。

Action 元素中的值对应于服务支持的 API。操作前附加了 config: 以表示其指的是 AWS Config 操作。您可以在 Action 元素中使用 * 通配符,如以下示例所示:

  • "Action": ["config:*ConfigurationRecorder"]

    这允许以“ConfigurationRecorder”结尾的所有 AWS Config 操作(StartConfigurationRecorderStopConfigurationRecorder)。

  • "Action": ["config:*"]

    这将允许所有 AWS Config 操作,但不允许其他 AWS 服务的操作。

  • "Action": ["*"]

    这将允许所有 AWS 操作。此权限适合授予充当您账户的 AWS 管理员的用户。

只读策略不对用户授予执行 StartConfigurationRecorderStopConfigurationRecorderDeleteConfigurationRecorder 操作的权限。不允许使用此策略的用户启动配置记录器、停止配置记录器或删除配置记录器。有关 AWS Config 操作的列表,请参阅AWS Config API Reference

完全访问权限

以下示例展示了一个授予对 AWS Config 的完全访问权限的策略。它对用户授予执行所有 AWS Config 操作的权限。它还允许用户管理 Amazon S3 存储桶中的文件,以及管理与用户关联的账户中的 Amazon SNS 主题。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sns:AddPermission", "sns:CreateTopic", "sns:DeleteTopic", "sns:GetTopicAttributes", "sns:ListPlatformApplications", "sns:ListTopics", "sns:SetTopicAttributes" ], "Resource": "arn:aws:sns:*" }, { "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:GetBucketAcl", "s3:GetBucketLocation", "s3:GetBucketNotification", "s3:GetBucketPolicy", "s3:GetBucketRequestPayment", "s3:GetBucketVersioning", "s3:ListAllMyBuckets", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:ListBucketVersions", "s3:PutBucketPolicy" ], "Resource": "arn:aws:s3:::*" }, { "Effect": "Allow", "Action": [ "iam:CreateRole", "iam:GetRole", "iam:GetRolePolicy", "iam:ListRolePolicies", "iam:ListRoles", "iam:PassRole", "iam:PutRolePolicy", "iam:AttachRolePolicy", "iam:CreatePolicy", "iam:CreatePolicyVersion", "iam:DeletePolicyVersion" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "cloudtrail:DescribeTrails", "cloudtrail:GetTrailStatus", "cloudtrail:LookupEvents" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "config:*", "tag:Get*" ], "Resource": "*" } ] }

控制对多账户多区域数据聚合执行操作的用户权限

您可以使用资源级权限控制用户对多账户多区域数据聚合执行特定操作的能力。AWS Config 多账户多区域数据聚合 API 支持资源级别权限。使用资源级别权限可以将访问/修改资源数据限制为特定用户。

例如,您希望将对资源数据的访问限制为特定用户。 您可以创建两个聚合器 AccessibleAggregatorInAccessibleAggregator。然后,附加一个允许访问 AccessibleAggregator 的 IAM 策略。

在第一个策略中,您允许对您指定的配置 ARN 执行聚合器操作,例如 DescribeConfigurationAggregatorsDeleteConfigurationAggregator 操作。在下面的示例中,配置 ARN 为 arn:aws:config:ap-northeast-1:AccountID:config-aggregator/config-aggregator-mocpsqhs

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ConfigReadOnly", "Effect": "Allow", "Action": [ "config:PutConfigurationAggregator", "config:DescribePendingAggregationRequests", "config:DeletePendingAggregationRequest", "config:GetAggregateConfigRuleComplianceSummary", "config:DescribeAggregateComplianceByConfigRules", "config:GetAggregateComplianceDetailsByConfigRule", "config:DescribeConfigurationAggregators", "config:DescribeConfigurationAggregatorSourcesStatus", "config:DeleteConfigurationAggregator" ], "Resource": "arn:aws:config:ap-northeast-1:AccountID:config-aggregator/config-aggregator-mocpsqhs" } ] }

在第二个策略中,您拒绝对您指定的配置 ARN 执行聚合器操作。在下面的示例中,配置 ARN 为 arn:aws:config:ap-northeast-1:AccountID:config-aggregator/config-aggregator-pokxzldx

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ConfigReadOnly", "Effect": "Deny", "Action": [ "config:PutConfigurationAggregator", "config:DescribePendingAggregationRequests", "config:DeletePendingAggregationRequest", "config:GetAggregateConfigRuleComplianceSummary", "config:DescribeAggregateComplianceByConfigRules", "config:GetAggregateComplianceDetailsByConfigRule", "config:DescribeConfigurationAggregators", "config:DescribeConfigurationAggregatorSourcesStatus", "config:DeleteConfigurationAggregator" ], "Resource": "arn:aws:config:ap-northeast-1:AccountID:config-aggregator/config-aggregator-pokxzldx" } ] }

如果开发人员组中的用户尝试针对您在第二个策略中指定的配置描述或删除配置聚合器,该用户会收到拒绝访问异常。

以下 AWS CLI 示例显示用户创建两个聚合器 AccessibleAggregatorInAccessibleAggregator

aws configservice describe-configuration-aggregators

该命令成功完成:

{ "ConfigurationAggregators": [ { "ConfigurationAggregatorArn": "arn:aws:config:ap-northeast-1:AccountID:config-aggregator/config-aggregator-mocpsqhs", "CreationTime": 1517942461.442, "ConfigurationAggregatorName": "AccessibleAggregator", "AccountAggregationSources": [ { "AllAwsRegions": true, "AccountIds": [ "AccountID1", "AccountID2", "AccountID3" ] } ], "LastUpdatedTime": 1517942461.455 } ] }
{ "ConfigurationAggregators": [ { "ConfigurationAggregatorArn": "arn:aws:config:ap-northeast-1:AccountID:config-aggregator/config-aggregator-pokxzldx", "CreationTime": 1517942461.442, "ConfigurationAggregatorName": "InAccessibleAggregator", "AccountAggregationSources": [ { "AllAwsRegions": true, "AccountIds": [ "AccountID1", "AccountID2", "AccountID3" ] } ], "LastUpdatedTime": 1517942461.455 } ] }

注意

对于 account-aggregation-sources,输入以逗号分隔的您要为其聚合数据的 AWS 账户 ID 的列表。用方括号将账户 ID 括起来,并确保对引号进行转义 (例如,"[{\"AccountIds\": [\"AccountID1\",\"AccountID2\",\"AccountID3\"],\"AllAwsRegions\": true}]")。

然后,用户创建一个拒绝访问 InAccessibleAggregator 的 IAM 策略。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ConfigReadOnly", "Effect": "Deny", "Action": [ "config:PutConfigurationAggregator", "config:DescribePendingAggregationRequests", "config:DeletePendingAggregationRequest", "config:GetAggregateConfigRuleComplianceSummary", "config:DescribeAggregateComplianceByConfigRules", "config:GetAggregateComplianceDetailsByConfigRule", "config:DescribeConfigurationAggregators", "config:DescribeConfigurationAggregatorSourcesStatus", "config:DeleteConfigurationAggregator" ], "Resource": "arn:aws:config:ap-northeast-1:AccountID:config-aggregator/config-aggregator-pokxzldx" } ] }

接下来,用户确认 IAM 策略可用于限制对特定聚合器和规则的访问。

aws configservice get-aggregate-compliance-details-by-config-rule --configuration-aggregator-name InAccessibleAggregator --config-rule-name rule name --account-id AccountID --aws-region AwsRegion

该命令返回拒绝访问异常:

An error occurred (AccessDeniedException) when calling the GetAggregateComplianceDetailsByConfigRule operation: User: arn:aws:iam::AccountID:user/ is not authorized to perform: config:GetAggregateComplianceDetailsByConfigRule on resource: arn:aws:config:AwsRegion-1:AccountID:config-aggregator/config-aggregator-pokxzldx

通过资源级权限,您可以授予或拒绝对多账户多区域数据聚合执行特定操作的访问权限。

附加信息

要了解有关创建 IAM 用户、组、策略和权限的更多信息,请参阅 IAM 用户指南 中的创建您的第一个 IAM 用户和管理员组访问管理