AWS Config
開発者ガイド

AWS Config ユーザーにカスタムのアクセス許可を付与する

AWS Config ポリシーによって、AWS Config を使用して作業するユーザーにアクセス許可を付与します。ユーザーにそれぞれ異なるアクセス許可を付与する必要がある場合、AWS Config ポリシーは IAM グループにアタッチすることも各ユーザーにアタッチすることもできます。ポリシーを編集して、特定のアクセス許可を含めたり除外したりすることができます。独自のカスタムポリシーを作成することもできます。ポリシーとは、ユーザーが実行を許可されているアクションと、ユーザーが実行を許可されているアクションの対象となるリソースを定義する JSON ドキュメントです。

読み取り専用アクセス

次の例は、AWS Config に対する読み取り専用アクセスを付与する AWS マネージドポリシー、AWSConfigUserAccess を示します。また、このポリシーによって、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": "*" }, { "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", "iam:CreateServiceLinkedRole" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "cloudtrail:DescribeTrails", "cloudtrail:GetTrailStatus", "cloudtrail:LookupEvents" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "config:*", "tag:Get*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:DescribeDocument", "ssm:GetDocument", "ssm:DescribeAutomationExecutions", "ssm:GetAutomationExecution", "ssm:ListDocuments", "ssm:StartAutomationExecution" ], "Resource": "*" } ] }

マルチアカウントマルチリージョンのデータ集約のアクションに関するユーザーアクセス許可の制御

リソースレベルのアクセス許可を使用して、ユーザーが、複数アカウントのマルチリージョンのデータ集約で特定のアクションを実行できるかどうかを制御できます。AWS Config での複数アカウントのマルチリージョンのデータ集約では、API のリソースレベルのアクセス許可がサポートされます。リソースレベルのアクセス許可を使用すると、リソースデータへのアクセスおよび変更を特定のユーザーに制限することができます。

たとえば、リソースデータへのアクセスを特定のユーザーに制限するとします。2 種類のアグリケータ (AccessibleAggregator および InAccessibleAggregator) を作成できます。次に、AccessibleAggregator へのアクセスを許可する IAM ポリシーをアタッチします。

最初のポリシーでは、指定した config ARN のアグリゲータアクション (例: DescribeConfigurationAggregators および DeleteConfigurationAggregator) を許可します。次の例で、config 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" } ] }

2 番目のポリシーでは、指定した config ARN のアグリゲータアクションを拒否します。次の例で、config 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" } ] }

開発者グループのユーザーが、2 番目のポリシーに指定した config の設定アグリゲータをサブスクライブまたは削除しようとすると、アクセス拒否の例外がそのユーザーに送信されます。

次の AWS CLI の例では、ユーザーは、2 つのアグリゲータ、AccessibleAggregator および InAccessibleAggregator を作成します。

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 ユーザーと管理者グループの作成」および「アクセス管理」を参照してください。