CDK - Permissions

 

Principals

IAM 보안 주체로서 사용자, 서비스 또는 애플리케이션과 같은 AWS 리소스에 액세스하기 위해 인증 할 수 있는 주체입니다.

  1. IAM Role, IAM User 그리고 IAM Group
  2. Service Principals  (new iam.ServicePrincipal('service.amazonaws.com'))
  3. Federated principals (new iam.FederatedPrincipal('cognito-identity.amazonaws.com'))
  4. Account principals (new iam.AccountPrincipal('0123456789012'))
  5. Canonical user principals (new iam.CanonicalUserPrincipal('79a59d[...]7ef2be'))
  6. AWS organizations principals (new iam.ArnPrincipal(res.arn))
  7. Am iam.CompositePrincipal(principal1, principal2, ... ) to trust multiple principals

Grants

Amazon S3 또는 Amazon DynamoDB 테이블과 같이 액세스할 수 있는 리소스는 다른 엔터티에 대한 액세스 권한을 부여하는 메서드가 있습니다. 그러한 방법들은 모두 grant 이름으로 시작합니다.

Roles

다음 예제는 IAM Role을 이용해 Amazon EC2 서비스를 신뢰하는 새로운 역할을 생성합니다.

import * as iam from '@aws-cdk/aws-iam';
 
const role = new iam.Role(this'Role', {
  assumedBy: new iam.ServicePrincipal('ec2.amazonaws.com'),   // required
});

IAM Role 을 이용하여 신뢰 및 퍼미션 추가할 수 있습니다.

addToPolicy 메소드를 통해 규칙으로 정한 PolicyStatement 를 추가할 수 있습니다.

role.addToPolicy(new iam.PolicyStatement({
  effect: iam.Effect.DENY,
  resources: [bucket.bucketArn, otherRole.roleArn],
  actions: ['ec2:SomeAction''s3:AnotherAction'],
  conditions: {StringEquals: {
    'ec2:AuthorizedService''codebuild.amazonaws.com',
}}}));

Resource Policies

Amazon S3 buckets 과 IAM Roles 같은 몇몇 리소스는 리소스 정책을 가질수 있습니다.

아래와 같이 addToResourcePolicy 메소드를 사용할 수 있습니다.

bucket.addToResourcePolicy(new iam.PolicyStatement({
  effect: iam.Effect.ALLOW,
  actions: ['s3:SomeAction'],
  resources: [bucket.bucketArn],
  principals: [role]
}));

댓글

이 블로그의 인기 게시물

dailyFocus - Frontend

CDK - Assets

About VPC