

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

# AWS Serverless Application Repository 애플리케이션 정책 예제
<a name="security_iam_resource-based-policy-examples"></a>

 AWS Serverless Application Repository 애플리케이션에 연결된 권한 정책을 *애플리케이션 정책*이라고 합니다. 애플리케이션 정책은 지정된 보안 주체 또는 principalOrg가 AWS Serverless Application Repository 애플리케이션에서 수행할 수 있는 작업을 결정합니다.

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

게시자는 다음과 같은 3가지 범주로 애플리케이션 권한을 설정할 수 있습니다.
+ **프라이빗** - 동일한 계정으로 생성되었으며 다른 계정과 공유되지 않은 애플리케이션입니다. AWS 계정을 공유하는 소비자만 프라이빗 애플리케이션을 배포할 수 있는 권한이 있습니다.
+ **비공개 공유** - 게시자가 특정 AWS 계정 집합 또는 AWS 조직의 계정과 AWS 명시적으로 공유한 애플리케이션입니다. 소비자는 AWS 계정 또는 AWS 조직과 공유된 애플리케이션을 배포할 수 있는 권한이 있습니다. AWS 조직에 대한 자세한 내용은 *[AWS Organizations 사용 설명서를](https://docs.aws.amazon.com/organizations/latest/userguide/)* 참조하세요.
+ **공개 공유** - 게시자가 모든 사람과 공유한 애플리케이션입니다. 모든 소비자는 공개적 공유 애플리케이션을 배포할 수 있는 권한이 있습니다.

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

를 사용하여 애플리케이션 권한을 설정하는 방법에 대한 지침은 섹션을 AWS Management Console참조하세요[애플리케이션 공유](serverlessrepo-how-to-publish.md#share-application).

 AWS CLI 및 예제를 사용하여 애플리케이션 권한을 설정하는 방법에 대한 지침은 다음 섹션을 참조하세요.

## 애플리케이션 권한(AWS CLI 및 AWS SDKs)
<a name="application-permissions"></a>

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


****  

| 작업 | 설명 | 
| --- | --- | 
| GetApplication | 애플리케이션 관련 정보를 볼 수 있는 권한을 부여합니다. | 
| CreateCloudFormationChangeSet | 애플리케이션이 배포될 권한을 부여합니다.<br />참고: 이 작업은 배포 외에 어떠한 권한도 부여하지 *않습니다*. | 
| CreateCloudFormationTemplate | 애플리케이션에 대한 CloudFormation 템플릿을 생성할 수 있는 권한을 부여합니다. | 
| ListApplicationVersions | 애플리케이션의 버전 목록 작성 권한을 부여합니다. | 
| ListApplicationDependencies | 컨테이닝 애플리케이션에 중첩 애플리케이션의 목록을 표시할 수 있는 권한을 부여합니다. | 
| SearchApplications | 애플리케이션이 검색될 권한을 부여합니다. | 
| 배포 | 이 표의 위에 나열된 모든 작업을 가능하게 합니다 즉, 애플리케이션을 보고, 배포하고, 검색하고, 버전 목록을 작성할 수 있는 권한을 부여합니다. | 

## 애플리케이션 정책 예제
<a name="access-control-resource-based-examples"></a>

다음 예제에서는 AWS CLI를 사용하여 권한을 부여하는 방법을 보여 줍니다. 를 사용하여 권한을 부여하는 방법에 대한 자세한 내용은 섹션을 AWS Management Console참조하세요[애플리케이션 공유](serverlessrepo-how-to-publish.md#share-application).

이 섹션의 모든 예제는 다음 AWS CLI 명령을 사용하여 AWS Serverless Application Repository 애플리케이션과 연결된 권한 정책을 관리합니다.
+ [put-application-policy](https://docs.aws.amazon.com/cli/latest/reference/serverlessrepo/put-application-policy.html)
+ [get-application-policy](https://docs.aws.amazon.com/cli/latest/reference/serverlessrepo/get-application-policy.html)

**Topics**
+ [예제 1: 다른 계정과 애플리케이션 공유](#access-control-resource-based-example-share-with-specific-account)
+ [예제 2: 애플리케이션을 공개적으로 공유](#access-control-resource-based-example-share-publicly)
+ [예제 3: 애플리케이션 비공개](#access-control-resource-based-example-make-private)
+ [예제 4: 여러 계정 및 권한 지정](#access-control-resource-based-example-multiple-permissions)
+ [예제 5: AWS 조직의 모든 계정과 애플리케이션 공유](#access-control-resource-based-example-share-organization)
+ [예제 6: AWS 조직의 일부 계정과 애플리케이션 공유](#access-control-resource-based-example-accounts-in-organization)
+ [예제 7: 애플리케이션 정책 검색](#access-control-resource-based-example-retrieve-app-policy)
+ [예제 8: 특정 계정에서 애플리케이션을 중첩할 수 있도록 허용](#access-control-resource-based-example-nest-app-policy)

### 예제 1: 다른 계정과 애플리케이션 공유
<a name="access-control-resource-based-example-share-with-specific-account"></a>

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

```
aws serverlessrepo put-application-policy \
--region {{region}} \
--application-id {{application-arn}} \
--statements Principals={{account-id}},Actions=Deploy
```

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

### 예제 2: 애플리케이션을 공개적으로 공유
<a name="access-control-resource-based-example-share-publicly"></a>

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

```
aws serverlessrepo put-application-policy \
--region {{region}} \
--application-id {{application-arn}} \
--statements Principals=*,Actions=Deploy
```

**참고**  
애플리케이션을 공개적으로 공유하려면 `SemanticVersion` 및 `LicenseUrl` 속성이 둘 다 설정되어 있어야 합니다.

### 예제 3: 애플리케이션 비공개
<a name="access-control-resource-based-example-make-private"></a>

애플리케이션을 비공개로 설정할 수 있으므로 누구와도 공유되지 않으며 애플리케이션을 소유한 AWS 계정에서만 배포할 수 있습니다. 이렇게 하려면 정책에서 보안 주체 및 작업을 지웁니다. 그러면 AWS 조직 내 다른 계정의 권한도 제거되어 애플리케이션을 배포할 수 없습니다.

```
aws serverlessrepo put-application-policy \
--region {{region}} \
--application-id {{application-arn}} \
--statements '[]'
```

**참고**  
*프라이빗* 애플리케이션은 애플리케이션이 생성된 리전과 동일한 AWS 리전에서만 사용할 수 있습니다.

### 예제 4: 여러 계정 및 권한 지정
<a name="access-control-resource-based-example-multiple-permissions"></a>

여러 권한을 부여할 수 있으며 한 번에 두 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 조직의 모든 계정과 애플리케이션 공유
<a name="access-control-resource-based-example-share-organization"></a>

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

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

 AWS 조직에 대한 자세한 내용은 *[AWS Organizations 사용 설명서를](https://docs.aws.amazon.com/organizations/latest/userguide/)* 참조하세요.

**참고**  
 AWS 계정이 속한 AWS 조직만 지정할 수 있습니다. 멤버가 아닌 AWS 조직을 지정하려고 하면 오류가 발생합니다.  
애플리케이션을 AWS 조직과 공유하려면 나중에 공유를 취소해야 하는 경우를 대비하여 `UnshareApplication` 작업에 대한 권한을 포함해야 합니다.

### 예제 6: AWS 조직의 일부 계정과 애플리케이션 공유
<a name="access-control-resource-based-example-accounts-in-organization"></a>

 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: 애플리케이션 정책 검색
<a name="access-control-resource-based-example-retrieve-app-policy"></a>

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

```
aws serverlessrepo get-application-policy \
--region {{region}} \
--application-id {{application-arn}}
```

### 예제 8: 특정 계정에서 애플리케이션을 중첩할 수 있도록 허용
<a name="access-control-resource-based-example-nest-app-policy"></a>

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

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