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

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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

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

重要

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

AWSControlTowerAdmin ロール

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

このロール信頼ポリシーのスニペットの例を次に示します。

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

AWS CLI からこのロールを作成し、 という名前のファイルに入れるにはtrust.json、CLI コマンドの例を次に示します。

aws iam create-role --role-name AWSControlTowerAdmin --path /service-role/ --assume-role-policy-document file://trust.json

このロールには 2 つの IAM ポリシーが必要です。

  1. インラインポリシーの例:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:DescribeAvailabilityZones", "Resource": "*" } ] }
  2. に続く マネージドポリシー、つまり ですAWSControlTowerServiceRolePolicy

AWSControlTowerServiceRolePolicy

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

この管理ポリシーの更新は、表 AWS Control Tower のマネージドポリシー にまとめられています。

詳細については、『AWS マネージドポリシーリファレンスガイド』の「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": [ "account:EnableRegion", "account:ListRegions", "account:GetRegionOptStatus" ], "Resource": "*" }, { "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", "arn:aws:iam::*:role/AWSControlTowerBlueprintAccess" ] }, { "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" } ] }

信頼ポリシー

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

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" } ] }

信頼ポリシー

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

AWSControlTowerBlueprintAccess ロールの要件

AWS Control Tower では、同じ組織内の指定されたブループリントハブアカウントに AWSControlTowerBlueprintAccess ロールを作成する必要があります。

ロール名

ロールタイプは、AWSControlTowerBlueprintAccess である必要があります。

ロール信頼ポリシー

ロールは、以下のプリンシパルを信頼するように設定する必要があります。

  • 管理アカウントで AWS Control Tower を使用するプリンシパル。

  • 管理アカウントの AWSControlTowerAdmin ロール。

以下の例は、最小特権の信頼ポリシーを示しています。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::ManagementAccountId:role/AWSControlTowerAdmin", "arn:aws:iam::ManagementAccountId:role/YourControlTowerUserRole" ] }, "Action": "sts:AssumeRole", "Condition": {} } ] }

ロールのアクセス許可

ロールに 管理ポリシーAWSServiceCatalogAdminFullAccessをアタッチする必要があります。

AWSServiceRoleForAWSControlTower

このロールは、ランディングゾーンの維持に不可欠な操作 (ドリフトしたリソースの通知など) のために、Log Archive アカウント、監査アカウント、およびメンバーアカウントへのアクセス権を AWS Control Tower に 付与します。

AWSServiceRoleForAWSControlTower ロールには、アタッチされたマネージドポリシーと、IAM ロールのロール信頼ポリシーが必要です。

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

ロール信頼ポリシー:

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

AWSControlTowerAccountServiceRolePolicy

この AWS管理ポリシーにより、AWS Control Tower は、自動アカウント設定と一元管理を提供する AWS サービスをユーザーに代わって呼び出すことができます。

このポリシーには、Security Hub サービスマネージドスタンダード: AWS Control Tower の一部である Security Hub コントロールによって管理されるリソースの検出 AWS Security Hub 結果転送を実装するための AWS Control Tower の最小限のアクセス許可が含まれており、カスタマーアカウントを管理する機能を制限する変更が防止されます。 これはバックグラウンド AWS Security Hub ドリフト検出プロセスの一部であり、お客様が直接開始することはありません。

このポリシーは、各メンバーアカウントで特に Security Hub コントロール用の Amazon EventBridge ルールを作成するアクセス許可を付与します。これらのルールでは、正確な を指定する必要があります EventPattern。また、ルールはサービスプリンシパルが管理するルールにのみ適用されます。

サービスプリンシパル:  controltower.amazonaws.com

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

{ "Version": "2012-10-17", "Statement": [ { //For creating the managed rule "Sid": "AllowPutRuleOnSpecificSourcesAndDetailTypes", "Effect": "Allow", "Action": "events:PutRule", "Resource": "arn:aws:events:*:*:rule/*ControlTower*", "Condition": { "ForAnyValue:StringEquals": { "events:source": "aws.securityhub" }, "Null": { "events:detail-type": "false" }, "StringEquals": { "events:ManagedBy": "controltower.amazonaws.com", "events:detail-type": "Security Hub Findings - Imported" } } }, // Other operations to manage the managed rule { "Sid": "AllowOtherOperationsOnRulesManagedByControlTower", "Effect": "Allow", "Action": [ "events:DeleteRule", "events:EnableRule", "events:DisableRule", "events:PutTargets", "events:RemoveTargets" ], "Resource": "arn:aws:events:*:*:rule/*ControlTower*", "Condition": { "StringEquals": { "events:ManagedBy": "controltower.amazonaws.com" } } }, // More managed rule permissions { "Sid": "AllowDescribeOperationsOnRulesManagedByControlTower", "Effect": "Allow", "Action": [ "events:DescribeRule", "events:ListTargetsByRule" ], "Resource": "arn:aws:events:*:*:rule/*ControlTower*" }, // Add permission to publish the security notifications to SNS { "Sid": "AllowControlTowerToPublishSecurityNotifications", "Effect": "Allow", "Action": "sns:publish", "Resource": "arn:aws:sns:*:*:aws-controltower-AggregateSecurityNotifications", "Condition": { "StringEquals": { "aws:PrincipalAccount": "${aws:ResourceAccount}" } } }, // For drift verification { "Sid": "AllowActionsForSecurityHubIntegration", "Effect": "Allow", "Action": [ "securityhub:DescribeStandardsControls", "securityhub:GetEnabledStandards" ], "Resource": "arn:aws:securityhub:*:*:hub/default" } ] }

この管理ポリシーの更新は、表 AWS Control Tower のマネージドポリシー にまとめられています。