アイデンティティベースのポリシー (IAM) の例
ポリシーを IAM アイデンティティにアタッチできます。例えば、次の操作を実行できます。
-
アカウントのユーザーまたはグループにアクセス権限ポリシーをアタッチする - CodePipeline コンソールのパイプラインを表示するアクセス権限を付与するために、ユーザーが所属するユーザーまたはグループにアクセス許可のポリシーをアタッチできます。
-
アクセス権限ポリシーをロールにアタッチする (クロスアカウントの許可を付与) - ID ベースのアクセス権限ポリシーを IAM ロールにアタッチして、クロスアカウントの権限を付与することができます。例えば、アカウント A の管理者は、次のように別の AWS アカウント (例えば、アカウント B) または AWS のサービス にクロスアカウントアクセス許可を付与するロールを作成できます。
-
アカウント A の管理者は、IAM ロールを作成して、アカウント A のリソースに許可を付与するロールに許可ポリシーをアタッチします。
-
アカウント A の管理者は、アカウント B をそのロールを引き受けるプリンシパルとして識別するロールに、信頼ポリシーをアタッチします。
-
アカウント B の管理者は、アカウント B のユーザーにロールを引き受ける許可を委任できるようになります。これにより、アカウント B のユーザーはアカウント A のリソースの作成とアクセスができます。ロールを引き受ける許可を AWS のサービス に付与すると、信頼ポリシー内のプリンシパルも AWS のサービス のプリンシパルとなることができます。
IAM を使用した許可の委任の詳細については、「IAM ユーザーガイド」の「アクセス管理」を参照してください。
以下に示しているアクセス許可ポリシーの例では、us-west-2
region で MyFirstPipeline という名前のパイプライン内のすべてのステージ間の移行を無効または有効にするアクセス許可を付与しています。
- JSON
-
-
{
"Version":"2012-10-17",
"Statement" : [
{
"Effect" : "Allow",
"Action" : [
"codepipeline:EnableStageTransition",
"codepipeline:DisableStageTransition"
],
"Resource" : [
"arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline/*"
]
}
]
}
以下の例では、アカウント (111222333444) のポリシーを示します。このポリシーでは、ユーザーは CodePipeline コンソールのパイプライン MyFirstPipeline を表示することはできますが、変更することはできません。このポリシーは、AWSCodePipeline_ReadOnlyAccess マネージドポリシーに基づいていますが、パイプライン MyFirstPipeline に固有であるため、このマネージドポリシーを直接使用することはできません。ポリシーを特定のパイプラインに制限しない場合は、CodePipeline によって作成および保守されているいずれかのマネージドポリシーを使用することを検討してください。詳細については、「マネージドポリシーの使用」を参照してください。このポリシーは、アクセス用に作成した IAM ロール (CrossAccountPipelineViewers という名前のロールなど) にアタッチする必要があります。
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Action": [
"codepipeline:GetPipeline",
"codepipeline:GetPipelineState",
"codepipeline:GetPipelineExecution",
"codepipeline:ListPipelineExecutions",
"codepipeline:ListActionExecutions",
"codepipeline:ListActionTypes",
"codepipeline:ListPipelines",
"codepipeline:ListTagsForResource",
"iam:ListRoles",
"s3:ListAllMyBuckets",
"codecommit:ListRepositories",
"codedeploy:ListApplications",
"lambda:ListFunctions",
"codestar-notifications:ListNotificationRules",
"codestar-notifications:ListEventTypes",
"codestar-notifications:ListTargets"
],
"Effect": "Allow",
"Resource": "arn:aws:codepipeline:us-west-2:111222333444:MyFirstPipeline"
},
{
"Action": [
"codepipeline:GetPipeline",
"codepipeline:GetPipelineState",
"codepipeline:GetPipelineExecution",
"codepipeline:ListPipelineExecutions",
"codepipeline:ListActionExecutions",
"codepipeline:ListActionTypes",
"codepipeline:ListPipelines",
"codepipeline:ListTagsForResource",
"iam:ListRoles",
"s3:GetBucketPolicy",
"s3:GetObject",
"s3:ListBucket",
"codecommit:ListBranches",
"codedeploy:GetApplication",
"codedeploy:GetDeploymentGroup",
"codedeploy:ListDeploymentGroups",
"elasticbeanstalk:DescribeApplications",
"elasticbeanstalk:DescribeEnvironments",
"lambda:GetFunctionConfiguration",
"opsworks:DescribeApps",
"opsworks:DescribeLayers",
"opsworks:DescribeStacks"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Sid": "CodeStarNotificationsReadOnlyAccess",
"Effect": "Allow",
"Action": [
"codestar-notifications:DescribeNotificationRule"
],
"Resource": "*",
"Condition": {
"ArnLike": {
"codestar-notifications:NotificationsForResource": "arn:aws:iam::*:role/Service*"
}
}
}
]
}
このポリシーを作成したら、アカウント (111222333444) に IAM ロールを作成し、そのロールにポリシーをアタッチします。ロールの信頼関係で、このロールを継承する AWS アカウントを追加する必要があります。以下の例で示しているのは、11111111111111 AWS アカウントのユーザーが、111222333444 アカウントで定義されているロールを引き受けることを許可するポリシーを示しています。
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111111111111:root"
},
"Action": "sts:AssumeRole"
}
]
}
以下の例で示しているのは、11111111111111 AWS アカウントで作成されたポリシーで、111222333444 アカウントのCrossAccountPipelineViewersという名前のロールをユーザーが引き受けることを示しています。
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::111222333444:role/CrossAccountPipelineViewers"
}
]
}
アカウントのユーザーがアクセスを許可される通話とリソースを制限する IAM ポリシーを作成し、管理者ユーザーにそれらのポリシーをアタッチできます。IAM ロールを作成する方法、CodePipeline の IAM ポリシーステートメントの例を調べる方法の詳細については、「カスタマーマネージドポリシーの例」を参照してください。