リソースに対して設定されるポリシー。 Principal と Action を基本的に指定する。
Principal が AWS サービスであった場合、 SourceARN の Condition Key が利用可能。
例: CodeBuild で利用したいイメージがある ECR に対して、以下のポリシーを付与する。
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"CodeBuildAccess",
"Effect":"Allow",
"Principal":{
"Service":"codebuild.amazonaws.com"
},
"Action":[
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer"
],
"Condition":{
"ArnLike":{
"aws:SourceArn":"arn:aws:codebuild:region:123456789012:project/project-name"
},
"StringEquals":{
"aws:SourceAccount":"123456789012"
}
}
}
]
}
出典: https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-policy-examples.html
Identity-based Policy と Resource-based Policy は、基本的にはその和集合が計算され、ユーザーの最終的な Permission が確定する。
ただし、一部 (KMS や assumeRole) の Resource-based Policy やクロスアカウントでのアクセスは、 Identity-based Policy とセットでないと Deny されてしまう。 (積集合で最終的な Permission が確定する)
SourceARN
AWS サービスのリソースに対する操作が他の AWS サービスのリソースを直に操作するという構成の時に、その呼び出し元のリソースを表す。
(AWS) Role Trust Policy
Role を IAM Resource として見たときの、 Role に対する (AWS) Resource-based Policy のこと。 これにより assume role が可能となる。
AWS IAM における Principal の一時的な属性による条件
(AWS IAM) Principal でのアカウント vs Role vs Role Session
Resource-based Policy において Principal にアカウント, Role , Role Session をそれぞれ付与した場合の挙動。
AWS IAM の Policy
が指定されると、誰(Principal)が何の Action をどの Resource に行えるかが規定される。
(AWS) Permission Boundary
これを設定すると、 Identity-based Policy によって grant される Permission の上限が、 Permission Boundary に制限される。