AWS Control Tower でアイデンティティベースのポリシー (IAM ポリシー) を使用する - AWS Control Tower

AWS Control Tower でアイデンティティベースのポリシー (IAM ポリシー) を使用する

このトピックでは、アカウント管理者がどのようにして IAM アイデンティティ (ユーザー、グループ、ロール) に許可ポリシーをアタッチし、それによって AWS Control Tower リソースでのオペレーションを実行する許可を付与する方法を示す、アイデンティティベースのポリシーの例を示します。

重要

初めに、AWS Control Tower リソースへのアクセスを管理するための基本概念と使用可能なオプションについて説明する概要トピックをお読みになることをお勧めします。詳細については、「AWS Control Tower リソースに対するアクセス許可の管理の概要」を参照してください。

AWS Control Tower コンソールを使用するために必要なアクセス許可

AWS Control Tower は、ランディングゾーンを設定するときに、3 つのロールを自動的に作成します。コンソールアクセスを許可するには、3 つのロールすべてが必要です。AWS Control Tower では、アクションおよびリソースの最小セットへのアクセスを制限するためのベストプラクティスとして、アクセス許可が 3 つのロールに分割されます。

これらのロールのロール信頼ポリシーへのアクセスを制限することをお勧めします。詳細については、「ロールの信頼関係のオプションの条件」を参照してください。

AWSControlTowerAdmin ロール

このロールは、ランディングゾーンの維持にきわめて重要なインフラストラクチャへのアクセス権を持つ AWS Control Tower を提供します。AWSControlTowerAdmin ロールには、アタッチされたマネージドポリシーと、IAM ロールのロール信頼ポリシーが必要です。ロール信頼ポリシーは、リソースベースのポリシーで、どのプリンシパルがロールを引き受けることができるかを指定します。

このロールのマネージドポリシー: AWSControlTowerServiceRolePolicy

AWSControlTowerServiceRolePolicy AWS マネージドポリシーは、AWS Control Tower リソース (AWS CloudFormation Stacksets およびスタックインスタンス、AWS CloudTrail ログファイル、AWS Control Tower の設定アグリゲータ、AWS Control Tower で管理される AWS Organizations アカウントおよび組織単位 (OU) など) を作成し管理するためのアクセス許可を定義します。

AWSControlTowerServiceRolePolicy

マネージドポリシー名: AWSControlTowerServiceRolePolicy

AWSControlTowerServiceRolePolicy の JSON アーティファクトは次のとおりです。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:CreateStack", "cloudformation:CreateStackInstances", "cloudformation:CreateStackSet", "cloudformation:DeleteStack", "cloudformation:DeleteStackInstances", "cloudformation:DeleteStackSet", "cloudformation:DescribeStackInstance", "cloudformation:DescribeStacks", "cloudformation:DescribeStackSet", "cloudformation:DescribeStackSetOperation", "cloudformation:ListStackInstances", "cloudformation:UpdateStack", "cloudformation:UpdateStackInstances", "cloudformation:UpdateStackSet" ], "Resource": [ "arn:aws:cloudformation:*:*:type/resource/AWS-IAM-Role" ] }, { "Effect": "Allow", "Action": [ "cloudformation:CreateStack", "cloudformation:CreateStackInstances", "cloudformation:CreateStackSet", "cloudformation:DeleteStack", "cloudformation:DeleteStackInstances", "cloudformation:DeleteStackSet", "cloudformation:DescribeStackInstance", "cloudformation:DescribeStacks", "cloudformation:DescribeStackSet", "cloudformation:DescribeStackSetOperation", "cloudformation:GetTemplate", "cloudformation:ListStackInstances", "cloudformation:UpdateStack", "cloudformation:UpdateStackInstances", "cloudformation:UpdateStackSet" ], "Resource": [ "arn:aws:cloudformation:*:*:stack/AWSControlTower*/*", "arn:aws:cloudformation:*:*:stack/StackSet-AWSControlTower*/*", "arn:aws:cloudformation:*:*:stackset/AWSControlTower*:*", "arn:aws:cloudformation:*:*:stackset-target/AWSControlTower*/*" ] }, { "Effect": "Allow", "Action": [ "cloudtrail:CreateTrail", "cloudtrail:DeleteTrail", "cloudtrail:GetTrailStatus", "cloudtrail:StartLogging", "cloudtrail:StopLogging", "cloudtrail:UpdateTrail", "cloudtrail:PutEventSelectors", "logs:CreateLogStream", "logs:PutLogEvents", "logs:PutRetentionPolicy" ], "Resource": [ "arn:aws:logs:*:*:log-group:aws-controltower/CloudTrailLogs:*", "arn:aws:cloudtrail:*:*:trail/aws-controltower*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::aws-controltower*/*" ] }, { "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": [ "arn:aws:iam::*:role/AWSControlTowerExecution" ] }, { "Effect": "Allow", "Action": [ "cloudtrail:DescribeTrails", "ec2:DescribeAvailabilityZones", "iam:ListRoles", "logs:CreateLogGroup", "logs:DescribeLogGroups", "organizations:CreateAccount", "organizations:DescribeAccount", "organizations:DescribeCreateAccountStatus", "organizations:DescribeOrganization", "organizations:DescribeOrganizationalUnit", "organizations:DescribePolicy", "organizations:ListAccounts", "organizations:ListAccountsForParent", "organizations:ListAWSServiceAccessForOrganization", "organizations:ListChildren", "organizations:ListOrganizationalUnitsForParent", "organizations:ListParents", "organizations:ListPoliciesForTarget", "organizations:ListTargetsForPolicy", "organizations:ListRoots", "organizations:MoveAccount", "servicecatalog:AssociatePrincipalWithPortfolio" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:GetRole", "iam:GetUser", "iam:ListAttachedRolePolicies", "iam:GetRolePolicy" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::*:role/service-role/AWSControlTowerStackSetRole", "arn:aws:iam::*:role/service-role/AWSControlTowerCloudTrailRole", "arn:aws:iam::*:role/service-role/AWSControlTowerConfigAggregatorRoleForOrganizations" ] }, { "Effect": "Allow", "Action": [ "config:DeleteConfigurationAggregator", "config:PutConfigurationAggregator", "config:TagResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/aws-control-tower": "managed-by-control-tower" } } }, { "Effect": "Allow", "Action": [ "organizations:EnableAWSServiceAccess", "organizations:DisableAWSServiceAccess" ], "Resource": "*", "Condition": { "StringLike": { "organizations:ServicePrincipal": [ "config.amazonaws.com", "cloudtrail.amazonaws.com" ] } } }, { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "*", "Condition": { "StringEquals": { "iam:AWSServiceName": "cloudtrail.amazonaws.com" } } } ] }

ロール信頼ポリシー:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "controltower.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

インラインポリシーは AWSControlTowerAdminPolicy です。

{ "Version": "2012-10-17", "Statement": [ { "Action": "ec2:DescribeAvailabilityZones", "Resource": "*", "Effect": "Allow" } ] }

AWSControlTowerStackSetRole

AWS CloudFormation は、AWS Control Tower によって作成されたアカウントにスタックセットをデプロイするためにこのロールを引き受けます。インラインポリシー:

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sts:AssumeRole" ], "Resource": [ "arn:aws:iam::*:role/AWSControlTowerExecution" ], "Effect": "Allow" } ] }

AWSControlTowerCloudTrailRole

AWS Control Tower は、ベストプラクティスとして CloudTrail を有効にし、CloudTrail にこのロールを提供します。CloudTrail は CloudTrail ログを作成し公開するために、このロールを引き受けます。インラインポリシー:

{ "Version": "2012-10-17", "Statement": [ { "Action": "logs:CreateLogStream", "Resource": "arn:aws:logs:*:*:log-group:aws-controltower/CloudTrailLogs:*", "Effect": "Allow" }, { "Action": "logs:PutLogEvents", "Resource": "arn:aws:logs:*:*:log-group:aws-controltower/CloudTrailLogs:*", "Effect": "Allow" } ] }

AWS Control Tower のマネージドポリシー

変更 説明 日付

AWSControlTowerServiceRolePolicy – 既存ポリシーへの更新。

AWS Control Tower では、ランディングゾーンバージョン 3.0 から、お客様が組織レベルの AWS CloudTrail 追跡を設定できるようにする新しいアクセス許可が追加されました。

組織ベースの CloudTrail 機能を使用するには、お客様が CloudTrail サービスに対して信頼されたアクセスを有効にする必要があります。また、IAM ユーザーまたはロールが、管理アカウントで組織レベルの追跡を作成するアクセス許可を持っていることが必要です。

2022 年 6 月 20 日

AWSControlTowerServiceRolePolicy – 既存のポリシーを更新します

AWS Control Tower では、お客様が KMS キー暗号化を使用できるようにする新しいアクセス許可が追加されました。

KMS 機能を使用すると、お客様独自の KMS キーを提供して AWS CloudTrail ログを暗号化できます。また、お客様は、ランディングゾーンの更新または修復中に KMS キーを変更することもできます。KMS キーを更新する場合、AWS CloudFormation は AWS CloudTrail の PutEventSelector API を呼び出すためのアクセス許可を必要とします。ポリシーの変更は、AWS CloudTrail の PutEventSelector API を呼び出すことを AWSControlTowerAdmin ロールに許可することです。

2021 年 7 月 28 日

AWS Control Tower は変更の追跡を開始しました

AWS Control Tower が、その AWS マネージドポリシーに対する変更の追跡を開始しました。

2021 年 5 月 27 日