JSON ポリシー
JSON ポリシー
- 例)AssumeRolePolicyDocument
JSON ポリシードキュメント構造
- Version – 使用するポリシー言語のバージョンを指定します。ベストプラクティスとして、最新の 2012-10-17 バージョンを使用してください。
- Statement – このポリシーのメイン要素であり、以下の要素のコンテナになります。ポリシーには、複数のステートメントを含めることができます。
- Sid (オプション) – 複数のステートメントを区別するための任意のステートメント ID が含まれます。
- Effect – Allow または Deny を使用してポリシーで付与または拒否するアクセス許可を指定します。
- Principal (一部の状況でのみ必須) リソースベースのポリシーを作成する場合は、アクセスを許可または拒否するアカウント、ユーザー、ロール、またはフェデレーティッドユーザーを指定する必要があります。ユーザーまたはロールにアタッチする IAM アクセス許可ポリシーを作成する場合は、この要素を含めることはできません。プリンシパルは、そのユーザーまたはロールを暗黙に示しています。
- Action – ポリシーで許可または拒否するアクションのリストが含まれます。
- Resource (一部の状況でのみ必須) IAM アクセス許可ポリシーを作成する場合は、アクションが適用されるリソースのリストを指定する必要があります。リソースベースのポリシーを作成する場合は、この要素はオプションです。この要素を含めない場合、アクションが適用されるリソースは、ポリシーがアタッチされているリソースです。
- Condition (オプション) ポリシーでアクセス許可を付与する状況を指定します。
ref. https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/access_policies.html#access_policies-json
JSON ポリシーとCloudFormation
JSONポリシー(のYAML形式)はAWS::IAM::RoleやAWS::ECR::RepositoryなどCloudFormationで使用される。
例 AWS::IAM::Role
Resources:
EcsTaskExecutionRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: "Allow"
Principal:
Service:
- "ecs-tasks.amazonaws.com"
Action:
- "sts:AssumeRole"
Path: "/"
ManagedPolicyArns:
- arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy
- arn:aws:iam::aws:policy/AmazonSSMReadOnlyAccess
上記AWS::IAM:RoleのAssumeRolePolicyDocumentでJSON ポリシーが使用されている。
Version: "2012-10-17"
Statement:
- Effect: "Allow"
Principal:
Service:
- "ecs-tasks.amazonaws.com"
Action:
- "sts:AssumeRole"
例 AWS::ECR::Repository
SampleRepository:
Type: "AWS::ECR::Repository"
Properties:
RepositoryName: 'sample/repo'
// .....
// .....
RepositoryPolicyText:
Version: "2012-10-17"
Statement:
- Sid: playground
Effect: Allow
Principal:
AWS:
- !Sub "arn:aws:iam:::root"
Action:
- "ecr:GetDownloadUrlForLayer"
- "ecr:BatchGetImage"
- "ecr:BatchCheckLayerAvailability"
- Sid: production
Effect: Allow
Principal:
AWS:
- !Sub "arn:aws:iam:::root"
Action:
- "ecr:GetDownloadUrlForLayer"
- "ecr:BatchGetImage"
- "ecr:BatchCheckLayerAvailability"
上記AWS::ECR::RepositoryのRepositoryPolicyTextでJSON ポリシーが使用されている。
Statement:
- Sid: playground
Effect: Allow
Principal:
AWS:
- !Sub "arn:aws:iam:::root"
Action:
- "ecr:GetDownloadUrlForLayer"
- "ecr:BatchGetImage"
- "ecr:BatchCheckLayerAvailability"
- Sid: production
Effect: Allow
Principal:
AWS:
- !Sub "arn:aws:iam:::root"
Action:
- "ecr:GetDownloadUrlForLayer"
- "ecr:BatchGetImage"
- "ecr:BatchCheckLayerAvailability"