AWS Proton IAM 서비스 역할 정책 예제 - AWS Proton

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS Proton IAM 서비스 역할 정책 예제

관리자는 환경 및 서비스 템플릿에 정의된 대로 AWS Proton 생성하는 리소스를 소유하고 관리합니다. 이들은 자신을 대신하여 리소스를 생성할 수 AWS Proton 있도록 허용하는 IAM 서비스 역할을 계정에 연결합니다. 관리자는 애플리케이션을 환경에 AWS Proton 서비스로 AWS Proton 배포할 때 개발자가 나중에 소유하고 관리하는 리소스에 대한 IAM 역할 및 AWS Key Management Service 키를 제공합니다. AWS Proton 데이터 암호화에 대한 자세한 내용은 AWS KMS 을 참조하십시오. AWS Proton의 데이터 보호

서비스 역할은 사용자를 대신하여 리소스를 AWS Proton 호출할 수 있는 Amazon Web Services (IAM) 역할입니다. 서비스 역할을 지정한 경우 AWS Proton 에서는 역할의 자격 증명을 사용합니다. 서비스 역할을 사용하여 수행할 수 있는 AWS Proton 작업을 명시적으로 지정하십시오.

IAM 서비스를 사용하여 서비스 역할과 해당 권한 정책을 생성합니다. 서비스 역할 생성에 대한 자세한 내용은 IAM 사용 설명서의 AWS 서비스에 권한을 위임하기 위한 역할 생성을 참조하십시오.

AWS Proton 프로비저닝을 위한 서비스 역할: AWS CloudFormation

플랫폼 팀의 구성원은 관리자가 AWS Proton 서비스 역할을 생성하여 환경을 만들 AWS Proton 때 해당 역할을 환경의 CloudFormation 서비스 역할 (CreateEnvironmentAPI 작업의 protonServiceRoleArn 매개변수) 로 제공할 수 있습니다. 이 역할을 사용하면 AWS Proton 환경 또는 해당 환경에서 실행되는 서비스 인스턴스가 AWS관리형 프로비저닝을 사용하고 인프라를 프로비저닝할 때 사용자 대신 다른 서비스에 API를 AWS CloudFormation 호출할 수 있습니다.

서비스 역할에 다음과 같은 IAM 역할 및 신뢰 정책을 사용하는 것이 좋습니다. AWS Proton AWS Proton 콘솔을 사용하여 환경을 만들고 새 역할을 생성하도록 선택하면 이 정책이 자동으로 생성되는 서비스 역할에 AWS Proton 추가됩니다. 이 정책에 대한 권한 범위를 축소할 때는 Access Denied 오류가 AWS Proton 발생하면 실패한다는 점을 염두에 두세요.

중요

다음 예제에 표시된 정책은 계정에 템플릿을 등록할 수 있는 모든 사람에게 관리자 권한을 부여한다는 점에 유의합니다. AWS Proton 템플릿에 어떤 리소스를 정의할지 알 수 없으므로 이러한 정책에는 광범위한 권한이 있습니다. 환경에 배포될 특정 리소스로 권한 범위를 좁히는 것이 좋습니다.

123456789012 AWS 계정 ID로 바꾸세요.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:CancelUpdateStack", "cloudformation:ContinueUpdateRollback", "cloudformation:CreateChangeSet", "cloudformation:CreateStack", "cloudformation:DeleteChangeSet", "cloudformation:DeleteStack", "cloudformation:DescribeChangeSet", "cloudformation:DescribeStackDriftDetectionStatus", "cloudformation:DescribeStackEvents", "cloudformation:DescribeStackResourceDrifts", "cloudformation:DescribeStacks", "cloudformation:DetectStackResourceDrift", "cloudformation:ExecuteChangeSet", "cloudformation:ListChangeSets", "cloudformation:ListStackResources", "cloudformation:UpdateStack" ], "Resource": "arn:aws:cloudformation:*:123456789012:stack/AWSProton-*" }, { "Effect": "Allow", "NotAction": [ "organizations:*", "account:*" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": [ "cloudformation.amazonaws.com" ] } } }, { "Effect": "Allow", "Action": [ "organizations:DescribeOrganization", "account:ListRegions" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": [ "cloudformation.amazonaws.com" ] } } } ] }
{ "Version": "2012-10-17", "Statement": { "Sid": "ServiceTrustRelationshipWithConfusedDeputyPrevention", "Effect": "Allow", "Principal": { "Service": "proton.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws::proton:*:123456789012:environment/*" } } } }

다음은 S3 리소스를 프로비저닝하는 서비스만 필요한 AWS Proton 경우 사용할 수 있는 AWS Proton 서비스 역할 정책의 예시입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:CancelUpdateStack", "cloudformation:ContinueUpdateRollback", "cloudformation:CreateChangeSet", "cloudformation:CreateStack", "cloudformation:DeleteChangeSet", "cloudformation:DeleteStack", "cloudformation:DescribeChangeSet", "cloudformation:DescribeStackDriftDetectionStatus", "cloudformation:DescribeStackEvents", "cloudformation:DescribeStackResourceDrifts", "cloudformation:DescribeStacks", "cloudformation:DetectStackResourceDrift", "cloudformation:ExecuteChangeSet", "cloudformation:ListChangeSets", "cloudformation:ListStackResources", "cloudformation:UpdateStack" ], "Resource": "arn:aws:cloudformation:*:123456789012:stack/AWSProton-*" }, { "Effect": "Allow", "Action": [ "s3:*" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": [ "cloudformation.amazonaws.com" ] } } } ] }

AWS Proton 프로비저닝을 위한 CodeBuild 서비스 역할

플랫폼 팀의 구성원은 관리자가 AWS Proton 서비스 역할을 생성하여 환경을 만들 AWS Proton 때 해당 역할을 환경의 CodeBuild 서비스 역할 (CreateEnvironmentAPI 작업의 codebuildRoleArn 매개변수) 로 제공할 수 있습니다. 이 역할을 사용하면 AWS Proton 환경 또는 해당 환경에서 실행되는 서비스 인스턴스가 프로비저닝을 사용하여 인프라를 CodeBuild 프로비저닝할 때 사용자 대신 다른 서비스에 API를 호출할 수 있습니다.

AWS Proton 콘솔을 사용하여 환경을 만들고 새 역할을 만들도록 선택하면 이 콘솔에서 생성한 서비스 역할에 관리자 권한이 있는 정책이 AWS Proton 추가됩니다. 역할을 직접 만들고 권한 범위를 좁힐 때는 Access Denied 오류가 AWS Proton 발생하면 실패한다는 점을 염두에 두세요.

중요

사용자를 위해 생성한 역할에 AWS Proton 연결되는 정책은 템플릿을 계정에 등록할 수 있는 모든 사람에게 관리자 권한을 부여한다는 점에 유의하세요. AWS Proton 템플릿에 어떤 리소스를 정의할지 알 수 없으므로 이러한 정책에는 광범위한 권한이 있습니다. 환경에 배포될 특정 리소스로 권한 범위를 좁히는 것이 좋습니다.

다음 예제는 를 사용하여 리소스를 CodeBuild 프로비저닝할 수 있는 권한을 제공합니다 AWS Cloud Development Kit (AWS CDK).

123456789012 AWS 계정 ID로 바꾸세요.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "logs:CreateLogStream", "logs:CreateLogGroup", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-east-1:123456789012:log-group:/aws/codebuild/AWSProton- Shell-*", "arn:aws:logs:us-east-1:123456789012:log-group:/aws/codebuild/AWSProton- Shell-*:*" ], "Effect": "Allow" }, { "Action": "proton:NotifyResourceDeploymentStatusChange", "Resource": "arn:aws:proton:us-east-1:123456789012:*", "Effect": "Allow" }, { "Action": "sts:AssumeRole", "Resource": [ "arn:aws:iam::123456789012:role/cdk-*-deploy-role-*", "arn:aws:iam::123456789012:role/cdk-*-file-publishing-role-*" ], "Effect": "Allow" } ] }
{ "Version": "2012-10-17", "Statement": { "Sid": "CodeBuildTrustRelationshipWithConfusedDeputyPrevention", "Effect": "Allow", "Principal": { "Service": "codebuild.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws::proton:*:123456789012:environment/*" } } } }

AWS Proton 파이프라인 서비스 역할

서비스 파이프라인을 프로비저닝하려면 다른 서비스에 API를 호출할 수 있는 권한이 AWS Proton 필요합니다. 필수 서비스 역할은 환경을 만들 때 제공하는 서비스 역할과 비슷합니다. 하지만 파이프라인 생성 역할은 AWS 계정의 모든 서비스에서 공유되며, 콘솔에서 또는 UpdateAccountSettingsAPI 작업을 통해 이러한 역할을 계정 설정으로 제공합니다.

AWS Proton 콘솔을 사용하여 계정 설정을 업데이트하고 AWS CloudFormation 또는 CodeBuild 서비스 역할에 대한 새 역할을 생성하도록 선택하면 콘솔에서 생성하는 서비스 역할에 AWS Proton 추가되는 정책은 이전 섹션 AWS-관리형 프로비저닝 역할CodeBuild 프로비저닝 역할 에서 설명한 정책과 동일합니다. 이 정책에 대한 권한 범위를 축소할 때는 Access Denied 오류가 AWS Proton 발생하면 실패한다는 점을 염두에 두세요.

중요

이전 섹션의 예시 정책은 계정에 템플릿을 등록할 수 있는 모든 사람에게 관리자 권한을 부여한다는 점에 유의합니다. AWS Proton 템플릿에 어떤 리소스를 정의할지 알 수 없으므로 이러한 정책에는 광범위한 권한이 있습니다. 파이프라인에 배포될 특정 리소스로 권한 범위를 좁히는 것이 좋습니다.

AWS Proton 구성 요소 역할

플랫폼 팀의 구성원은 관리자가 AWS Proton 서비스 역할을 생성하여 환경을 만들 AWS Proton 때 해당 역할을 환경의 CloudFormation 구성 요소 역할 (CreateEnvironmentAPI 작업의 componentRoleArn 매개변수) 로 제공할 수 있습니다. 이 역할은 직접 정의된 구성 요소가 프로비저닝할 수 있는 인프라의 범위를 좁힙니다. 구성 요소에 대한 자세한 내용은 AWS Proton 구성 요소를 참조하세요.

다음 예제 정책은 Simple Storage Service(S3) 버킷 및 관련 액세스 정책을 프로비저닝하는 직접 정의된 구성 요소를 생성할 수 있도록 지원합니다.

123456789012 AWS 계정 ID로 바꾸세요.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:CancelUpdateStack", "cloudformation:CreateChangeSet", "cloudformation:DeleteChangeSet", "cloudformation:DescribeStacks", "cloudformation:ContinueUpdateRollback", "cloudformation:DetectStackResourceDrift", "cloudformation:DescribeStackResourceDrifts", "cloudformation:DescribeStackEvents", "cloudformation:CreateStack", "cloudformation:DeleteStack", "cloudformation:UpdateStack", "cloudformation:DescribeChangeSet", "cloudformation:ExecuteChangeSet", "cloudformation:ListChangeSets", "cloudformation:ListStackResources" ], "Resource": "arn:aws:cloudformation:*:123456789012:stack/AWSProton-*" }, { "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:DeleteBucket", "s3:GetBucket", "iam:CreatePolicy", "iam:DeletePolicy", "iam:GetPolicy", "iam:ListPolicyVersions", "iam:DeletePolicyVersion" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": "cloudformation.amazonaws.com" } } } ] }
{ "Version": "2012-10-17", "Statement": { "Sid": "ServiceTrustRelationshipWithConfusedDeputyPrevention", "Effect": "Allow", "Principal": { "Service": "proton.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws::proton:*:123456789012:environment/*" } } } }