AWS Serverless Application Repository 리소스 기반 정책 예제 - AWS Serverless Application Repository

문서의 영문과 번역 사이에 충돌이 있는 경우에는 영문 버전을 따릅니다. 번역 버전은 기계 번역을 사용하여 제공합니다.

AWS Serverless Application Repository 리소스 기반 정책 예제

AWS Serverless Application Repository 애플리케이션에 연결되어 있는 권한 정책을 리소스 기반 정책(또는 애플리케이션 정책)이라고 합니다. 리소스 기반 정책은 지정된 보안 주체가 AWS Serverless Application Repository 리소스에 대해 수행할 수 있는 작업과 필요한 조건을 결정합니다.

AWS Serverless Application Repository 애플리케이션은 AWS Serverless Application Repository의 기본 AWS 리소스입니다. AWS Serverless Application Repository 애플리케이션 정책은 게시자가 소비자에게 애플리케이션을 배포하고 해당 애플리케이션의 세부 정보를 검색하며 보는 등의 관련 작업을 수행할 수 있는 권한을 부여하는 데 주로 사용됩니다.

게시자는 다음과 같은 3가지 범주로 애플리케이션 권한을 설정할 수 있습니다.

  • 비공개 – 동일한 계정을 사용하여 생성하고 다른 계정과 공유하지 않은 애플리케이션입니다. 해당 AWS 계정을 공유하는 소비자만 비공개 애플리케이션을 배포할 권한이 있습니다.

  • 비공개 공유 – 게시자가 특정한 AWS 계정 집합 또는 AWS 조직의 AWS 계정과 명시적으로 공유한 애플리케이션입니다. 소비자는 자신의 AWS 계정 또는 AWS 조직과 공유된 애플리케이션을 배포할 권한이 있습니다. AWS 조직에 대한 자세한 내용은 AWS Organizations 사용 설명서 단원을 참조하십시오.

  • 공개적 공유 – 게시자가 모두와 공유한 애플리케이션입니다. 모든 소비자는 공개적 공유 애플리케이션을 배포할 수 있는 권한이 있습니다.

참고

비공개 공유 애플리케이션의 경우 AWS Serverless Application Repository가 보안 주체로서만 AWS 계정을 지원합니다. 게시자는 AWS 계정 내의 모든 사용자에게 단일 그룹으로서 AWS Serverless Application Repository 애플리케이션에 대한 권한을 부여하거나 거부할 수 있으며, AWS 계정 내의 개별 사용자에게 AWS Serverless Application Repository 애플리케이션에 대한 권한을 부여하거나 거부할 수는 없습니다.

AWS Management 콘솔을 사용하여 애플리케이션 권한을 설정하는 방법에 대한 자세한 내용은 애플리케이션 공유 단원을 참조하십시오.

AWS CLI를 사용하여 애플리케이션 권한을 설정하는 방법에 대한 자세한 내용과 예제는 다음 단원을 참조하십시오.

애플리케이션 권한(AWS CLI 및 AWS SDK)

AWS CLI 또는 AWS SDK를 사용하여 AWS Serverless Application Repository 애플리케이션에 대한 권한을 설정하는 경우 다음 작업을 지정할 수 있습니다.

Action 설명
GetApplication

애플리케이션 관련 정보를 볼 수 있는 권한을 부여합니다.

CreateCloudFormationChangeSet

애플리케이션이 배포될 권한을 부여합니다.

참고: 이 작업은 배포 외에 어떠한 권한도 부여하지 않습니다.

CreateCloudFormationTemplate

애플리케이션에 대한 AWS CloudFormation 템플릿을 생성할 수 있는 권한을 부여합니다.

ListApplicationVersions 애플리케이션의 버전 목록 작성 권한을 부여합니다.
ListApplicationDependencies 컨테이닝 애플리케이션에 중첩 애플리케이션의 목록을 표시할 수 있는 권한을 부여합니다.
SearchApplications 애플리케이션이 검색될 권한을 부여합니다.
배포

이 표의 위에 나열된 모든 작업을 가능하게 합니다 즉, 애플리케이션을 보고, 배포하고, 검색하고, 버전 목록을 작성할 수 있는 권한을 부여합니다.

리소스 기반 정책 예제

다음 예제에서는 AWS CLI를 사용하여 권한을 부여하는 방법을 보여 줍니다. AWS Management 콘솔을 사용하여 권한을 부여하는 방법에 대한 자세한 내용은 애플리케이션 공유 단원을 참조하십시오.

이 단원의 모든 예제에서는 다음 AWS CLI 명령을 사용하여 AWS Serverless Application Repository 애플리케이션과 연결된 권한 정책을 관리합니다.

예제 1: 다른 계정과 애플리케이션 공유

다른 특정 계정과 애플리케이션을 공유하되 그 외 계정과는 공유하지 않으려면 공유하고자 하는 AWS 계정 ID를 보안 주체로 지정합니다. 다시 말해 애플리케이션을 비공개 공유로 설정합니다. 이렇게 하려면 다음 AWS CLI 명령을 사용하십시오.

aws serverlessrepo put-application-policy \ --region region \ --application-id application-arn \ --statements Principals=account-id,Actions=Deploy
참고

비공개 공유 애플리케이션은 애플리케이션이 생성된 AWS 리전에서만 사용할 수 있습니다.

예제 2: 애플리케이션을 공개적으로 공유

애플리케이션을 공개하려면 다음 예제와 같이 보안 주체로 "*"를 지정하여 모두와 공유합니다. 공개적으로 공유되는 애플리케이션은 모든 리전에서 사용할 수 있습니다.

aws serverlessrepo put-application-policy \ --region region \ --application-id application-arn \ --statements Principals=*,Actions=Deploy
참고

애플리케이션을 공개적으로 공유하려면 SemanticVersionLicenseUrl 속성이 둘 다 설정되어 있어야 합니다.

예제 3: 애플리케이션 비공개

애플리케이션을 비공개로 하여 누구와 공유하지 않고, 이를 소유한 AWS 계정에서만 배포하도록 할 수 있습니다. 그러려면 정책에서 보안 주체 및 작업을 지워 AWS 조직 내의 다른 계정에서 애플리케이션을 배포하지 못하도록 권한을 제거합니다.

aws serverlessrepo put-application-policy \ --region region \ --application-id application-arn \ --statements '[]'
참고

비공개 애플리케이션은 애플리케이션이 생성된 AWS 리전에서만 사용할 수 있습니다.

예제 4: 여러 계정 및 권한 지정

여러 권한을 부여할 수 있으며, 한 번에 두 개 이상의 AWS 계정에 권한을 부여할 수 있습니다. 이렇게 하려면 다음 예제와 같이 보안 주체 및 작업으로 목록을 지정합니다.

aws serverlessrepo put-application-policy \ --region region \ --application-id application-arn \ --statements Principals=account-id-1,account-id-2,Actions=GetApplication,CreateCloudFormationChangeSet

예제 5: AWS 조직의 모든 계정과 애플리케이션 공유

AWS 조직 내의 모든 사용자에게 권한을 부여할 수 있습니다. 다음 예와 같이 조직 ID를 지정하면 됩니다.

aws serverlessrepo put-application-policy \ --region region \ --application-id application-arn \ --statements Principals=*,PrincipalOrgIDs=org-id,Actions=Deploy,UnshareApplication

AWS 조직에 대한 자세한 내용은 AWS Organizations 사용 설명서 단원을 참조하십시오.

참고

자신의 AWS 계정이 속하는 AWS 조직만 지정할 수 있습니다. 소속되지 않은 AWS 조직을 지정하려고 하면 오류가 발생합니다.

AWS 조직과 애플리케이션을 공유하려면 나중에 공유를 취소해야 하는 경우에 대비하여 UnshareApplication 작업에 대한 권한을 포함시켜야 합니다.

예제 6: AWS 조직의 일부 계정과 애플리케이션 공유

AWS 조직 내의 특정 계정에 권한을 부여할 수 있습니다. 다음 예와 같이 AWS 계정 목록을 보안 주체로 지정하고 조직 ID를 지정하면 됩니다.

aws serverlessrepo put-application-policy \ --region region \ --application-id application-arn \ --statements Principals=account-id-1,account-id-2,PrincipalOrgIDs=org-id,Actions=Deploy,UnshareApplication
참고

자신의 AWS 계정이 속하는 AWS 조직만 지정할 수 있습니다. 소속되지 않은 AWS 조직을 지정하려고 하면 오류가 발생합니다.

AWS 조직과 애플리케이션을 공유하려면 나중에 공유를 취소해야 하는 경우에 대비하여 UnshareApplication 작업에 대한 권한을 포함시켜야 합니다.

예제 7: 애플리케이션 정책 검색

현재 공유 상태인지 여부를 확인하기 위해서 등 애플리케이션의 현재 정책을 보려면 다음 예제와 같이 get-application-policy 명령을 사용합니다.

aws serverlessrepo get-application-policy \ --region region \ --application-id application-arn

예제 8: 특정 계정에서 애플리케이션을 중첩할 수 있도록 허용

퍼블릭 애플리케이션을 누구나 중첩할 수 있습니다. 애플리케이션을 특정 계정에서 중첩할 수 있도록 허용하려면 다음 예제에 나온 것처럼 최소한의 사용 권한을 설정해야 합니다.

aws serverlessrepo put-application-policy \ --region region \ --application-id application-arn \ --statements Principals=account-id-1,account-id-2,Actions=GetApplication,CreateCloudFormationTemplate