

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

# Amazon Verified Permissions 정책 템플릿 및 템플릿 연결 정책
<a name="policy-templates"></a>

Verified Permissions에서 정책 템플릿은 , `principal` `resource`또는 둘 다에 대한 자리 표시자가 있는 정책입니다. 정책 템플릿만으로는 권한 부여 요청을 처리하는 데 사용할 수 없습니다. 권한 부여 요청을 처리하려면 *정책 템플릿을 기반으로 템플릿 연결* 정책을 생성해야 합니다. 정책 템플릿을 사용하면 정책을 한 번 정의한 다음 여러 보안 주체 및 리소스와 함께 사용할 수 있습니다. 정책 템플릿 업데이트는 템플릿을 사용하는 모든 정책에 반영됩니다. 자세한 내용은 Cedar 정책 언어 참조 가이드의 [Cedar 정책 템플릿](https://docs.cedarpolicy.com/policies/templates.html)을 참조하세요.

선택적으로 정책 템플릿 이름을 정책 템플릿에 할당할 수 있습니다. 정책 템플릿 이름은 정책 스토어 내에서 고유해야 하며 접두사가 붙어야 합니다`name/`. `policyTemplateId` 파라미터를 수락하는 컨트롤 플레인 작업에서 정책 템플릿 ID 대신 정책 템플릿 이름을 사용할 수 있습니다. `GetPolicyTemplate` 및 만 출력에 이름을 `ListPolicyTemplates` 반환합니다. 다음 예제에서는 정책 템플릿 이름을 사용하여를 사용하여 정책 템플릿을 검색합니다`GetPolicyTemplate`.

```
$ aws verifiedpermissions get-policy-template \
    --policy-template-id name/example-policy-template \
    --policy-store-id PSEXAMPLEabcdefg111111
```

예를 들어 다음 정책 템플릿은 정책 템플릿을 사용하는 보안 주체 및 리소스에 대한 `Read``Edit`, 및 `Comment` 권한을 제공합니다.

```
permit(
  principal == ?principal,
  action in [Action::"Read", Action::"Edit", Action::"Comment"],
  resource == ?resource
);
```

이 템플릿을 `Editor` 기반으로 라는 정책을 생성하려는 경우 보안 주체가 특정 리소스의 편집기로 지정되면 애플리케이션에서 보안 주체가 리소스를 읽고 편집하고 댓글을 달 수 있는 권한을 제공하는 정책을 생성합니다.

정적 정책과 달리 템플릿 연결 정책은 동적입니다. 정책 템플릿에서 `Comment` 작업을 제거하려는 경우 해당 템플릿에 연결되거나 이를 기반으로 하는 모든 정책이 그에 따라 업데이트되고 정책에 지정된 보안 주체가 더 이상 해당 리소스에 주석을 달 수 없게 됩니다.

템플릿 연결 정책 예제에 대한 자세한 내용은 섹션을 참조하세요[Amazon Verified Permissions 예제 템플릿 연결 정책](policy-templates-example-policies.md).

# Amazon Verified Permissions 정책 템플릿 생성
<a name="policy-templates-create"></a>

 AWS Management Console AWS CLI, 또는 AWS SDKs. 정책 템플릿을 사용하면 정책을 한 번 정의한 다음 여러 보안 주체 및 리소스와 함께 사용할 수 있습니다. 정책 템플릿을 생성한 후 템플릿 연결 정책을 생성하여 정책 템플릿을 특정 보안 주체 및 리소스와 함께 사용할 수 있습니다. 자세한 내용은 [Amazon Verified Permissions 템플릿 연결 정책 생성](policy-templates-create-policy.md) 단원을 참조하십시오.

------
#### [ AWS Management Console ]

**정책 템플릿을 생성하려면**

1. [Verified Permissions 콘솔](https://console.aws.amazon.com/verifiedpermissions/)을 엽니다. 정책 스토어를 선택합니다.

1. 왼쪽의 탐색 창에서 **정책 템플릿**을 선택합니다.

1. **정책 템플릿 생성**을 선택합니다.

1. **세부 정보** 섹션에서 **정책 템플릿 설명**을 입력합니다.

1. **정책 템플릿 본문** 섹션에서 `?principal` 및 `?resource` 자리 표시자를 사용하여 이 템플릿을 기반으로 만든 정책이 부여하는 권한을 사용자 지정할 수 있도록 허용합니다. **형식**을 선택하여 정책 템플릿 구문의 형식을 권장 간격과 들여쓰기로 지정할 수 있습니다.

1. **정책 템플릿 생성**을 선택합니다.

------
#### [ AWS CLI ]

**정책 템플릿을 생성하려면**  
[CreatePolicyTemplate](https://docs.aws.amazon.com/verifiedpermissions/latest/apireference/API_CreatePolicyTemplate.html) 작업을 사용하여 정책 템플릿을 생성할 수 있습니다. 다음 예에서는 보안 주체에 대한 자리 표시자가 있는 정책 템플릿을 생성합니다.

`template1.txt` 파일에는 다음 코드가 포함되어 있습니다.

```
"VacationAccess"
permit(
    principal in ?principal,
    action == Action::"view",
    resource == Photo::"VacationPhoto94.jpg"
);
```

```
$ aws verifiedpermissions create-policy-template \
    --description "Template for vacation picture access" 
    --statement file://template1.txt 
    --policy-store-id PSEXAMPLEabcdefg111111
{
    "createdDate": "2023-05-18T21:17:47.284268+00:00",
    "lastUpdatedDate": "2023-05-18T21:17:47.284268+00:00",
    "policyStoreId": "PSEXAMPLEabcdefg111111",
    "policyTemplateId": "PTEXAMPLEabcdefg111111"
}
```

**정책 템플릿 이름을 사용하여 정책 템플릿을 생성하려면**  
정책 템플릿을 생성할 때 선택적으로 정책 템플릿 이름을 지정할 수 있습니다. 이름은 정책 스토어 내의 모든 정책 템플릿에 대해 고유해야 하며 접두사가 붙어야 합니다`name/`. 정책 템플릿 ID 대신 이름을 사용할 수 있습니다.

```
$ aws verifiedpermissions create-policy-template \
    --description "Template for vacation picture access" \
    --statement file://template1.txt \
    --policy-store-id PSEXAMPLEabcdefg111111 \
    --name name/example-policy-template
{
    "createdDate": "2023-06-12T20:47:42.804511+00:00",
    "lastUpdatedDate": "2023-06-12T20:47:42.804511+00:00",
    "policyStoreId": "PSEXAMPLEabcdefg111111",
    "policyTemplateId": "PTEXAMPLEabcdefg111111"
}
```

**참고**  
정책 스토어의 다른 정책 템플릿과 이미 연결된 이름을 지정하면 `ConflictException` 오류가 발생합니다.

------

# Amazon Verified Permissions 템플릿 연결 정책 생성
<a name="policy-templates-create-policy"></a>

, AWS Management Console AWS CLI또는 AWS SDKs. 템플릿 연결 정책은 해당 정책 템플릿에 연결된 상태로 유지됩니다. 정책 템플릿에서 정책 문을 변경하면 해당 템플릿에 연결된 모든 정책은 해당 시점부터 이루어진 모든 권한 부여 결정에 대해 새 문을 자동으로 사용합니다.

템플릿 연결 정책 예제는 섹션을 참조하세요[Amazon Verified Permissions 예제 템플릿 연결 정책](policy-templates-example-policies.md).

------
#### [ AWS Management Console ]

**정책 템플릿을 인스턴스화하여 템플릿 연결 정책을 생성하려면**

1. [Verified Permissions 콘솔](https://console.aws.amazon.com/verifiedpermissions/)을 엽니다. 정책 스토어를 선택합니다.

1. 왼쪽 탐색 창에서 **정책**을 선택합니다.

1. **정책 생성**을 선택한 다음 **템플릿 연결 정책 생성**을 선택합니다.

1. 사용할 정책 템플릿 옆의 라디오 버튼을 선택한 후 **다음**을 선택합니다.

1. 템플릿 연결 정책의 이 특정 인스턴스에 사용할 **보안 주체**와 **리소스**를 입력합니다. 지정된 값은 **정책 설명** 미리 보기 필드에 표시됩니다.
**참고**  
**보안 주체** 및 **리소스** 값은 정적 정책과 형식이 같아야 합니다. 예를 들어, 보안 주체에 대한 `AdminUsers` 그룹을 지정하려면 `Group::"AdminUsers"`를 입력합니다. `AdminUsers`를 입력하면 유효성 검사 오류가 표시됩니다.

1. **템플릿 연결 정책 생성**을 선택합니다.

   새 템플릿 연결 정책이 **정책** 아래에 표시됩니다.

------
#### [ AWS CLI ]

**정책 템플릿을 인스턴스화하여 템플릿 연결 정책을 생성하려면**  
기존 정책 템플릿을 참조하고 템플릿에서 사용하는 자리 표시자의 값을 지정하는 템플릿 연결 정책을 만들 수 있습니다.

다음 예에서는 다음 문을 사용하여 템플릿을 사용하는 템플릿 연결 정책을 생성합니다.

```
permit(
    principal in ?principal,
    action == PhotoFlash::Action::"view",
    resource == PhotoFlash::Photo::"VacationPhoto94.jpg"
);
```

또한 다음 `definition.txt` 파일을 사용하여 `definition` 매개 변수 값을 제공합니다.

```
{
    "templateLinked": {
        "policyTemplateId": "PTEXAMPLEabcdefg111111",
        "principal": {
            "entityType": "PhotoFlash::User",
            "entityId": "alice"
        }
    }
}
```

출력에는 템플릿에서 가져오는 리소스와 정의 매개변수에서 가져오는 보안 주체 리소스가 모두 표시됩니다.

```
$ aws verifiedpermissions create-policy \
    --definition file://definition.txt
    --policy-store-id PSEXAMPLEabcdefg111111
{
    "createdDate": "2023-05-22T18:57:53.298278+00:00",
    "lastUpdatedDate": "2023-05-22T18:57:53.298278+00:00",
    "policyId": "TPEXAMPLEabcdefg111111",
    "policyStoreId": "PSEXAMPLEabcdefg111111",
    "policyType": "TEMPLATELINKED",
    "principal": {
        "entityId": "alice",
        "entityType": "PhotoFlash::User"
    },
    "resource": {
        "entityId": "VacationPhoto94.jpg",
        "entityType": "PhotoFlash::Photo"
    }
}
```

------

# Amazon Verified Permissions 정책 템플릿 편집
<a name="policy-templates-edit"></a>

, 또는 SDK를 사용하여 Verified Permissions에서 정책 템플릿을 편집 AWS Management Console AWS CLI하거나 업데이트할 수 있습니다. AWS SDKs 정책 템플릿을 편집하면 템플릿에 연결되거나 이를 기반으로 하는 정책이 자동으로 업데이트되므로 정책 템플릿을 편집할 때 주의해야 하며 애플리케이션을 손상시키는 변경 사항이 실수로 도입되지 않도록 해야 합니다.

정책 템플릿의 다음 요소를 변경할 수 있습니다.
+ 정책 템플릿에서 `action` 참조하는
+ `when` 및와 같은 조건 절 `unless`

정책 템플릿의 다음 요소는 변경할 수 없습니다. 이러한 요소를 변경하려면 정책 템플릿을 삭제하고 다시 생성해야 합니다.
+ `permit` 또는에서 정책 템플릿의 영향 `forbid`
+ 정책 템플릿에서 `principal` 참조하는
+ 정책 템플릿에서 `resource` 참조하는

------
#### [ AWS Management Console ]

**정책 템플릿을 편집하려면**

1. [Verified Permissions 콘솔](https://console.aws.amazon.com/verifiedpermissions/)을 엽니다. 정책 스토어를 선택합니다.

1. 왼쪽의 탐색 창에서 **정책 템플릿**을 선택합니다. 콘솔에는 현재 정책 스토어에서 생성한 모든 정책 템플릿이 표시됩니다.

1. 정책 템플릿 옆에 있는 라디오 버튼을 선택하면 정책 템플릿 생성, 업데이트 시기, 정책 템플릿 내용 등 정책 템플릿에 대한 세부 정보가 표시됩니다.

1. **편집**을 선택하여 정책 템플릿을 편집합니다. 필요에 따라 **정책 설명** 및 **정책 본문**을 업데이트한 다음 **정책 템플릿 업데이트**를 선택합니다.

1. 정책 템플릿 옆에 있는 라디오 버튼을 선택한 다음 **삭제**를 선택하면 정책 템플릿을 삭제할 수 있습니다. **확인**을 선택하여 정책 템플릿 삭제를 확인합니다.

------
#### [ AWS CLI ]

**정책 템플릿을 편집하려면**  
[UpdatePolicy](https://docs.aws.amazon.com/verifiedpermissions/latest/apireference/API_UpdatePolicy.html) 작업을 사용하여 정적 정책을 생성할 수 있습니다. 다음 예에서는 정책 본문을 파일에 정의된 새 정책으로 교체하여 지정된 정책 템플릿을 업데이트합니다.

`template1.txt` 파일의 내용:

```
permit(
    principal in ?principal,
    action == Action::"view",
    resource in ?resource)
when {
    principal has department && principal.department == "research"
};
```

```
$ aws verifiedpermissions update-policy-template \
    --policy-template-id PTEXAMPLEabcdefg111111 \
    --description "My updated template description" \
    --statement file://template1.txt \ 
    --policy-store-id PSEXAMPLEabcdefg111111
{
    "createdDate": "2023-05-17T18:58:48.795411+00:00",
    "lastUpdatedDate": "2023-05-17T19:18:48.870209+00:00",
    "policyStoreId": "PSEXAMPLEabcdefg111111",
    "policyTemplateId": "PTEXAMPLEabcdefg111111"
}
```

**정책 템플릿의 이름을 업데이트하려면**  
정책 템플릿을 업데이트할 때 정책 템플릿 이름을 설정하거나 업데이트할 수 있습니다. 이름은 정책 스토어 내의 모든 정책 템플릿에 대해 고유해야 하며 접두사가 붙어야 합니다`name/`. 업데이트 요청에 이름 필드를 포함하지 않으면 기존 이름은 변경되지 않습니다. 이름을 제거하려면 빈 문자열로 설정합니다.

```
$ aws verifiedpermissions update-policy-template \
    --policy-template-id PTEXAMPLEabcdefg111111 \
    --statement file://template1.txt \
    --policy-store-id PSEXAMPLEabcdefg111111 \
    --name name/example-policy-template
{
    "createdDate": "2023-05-17T18:58:48.795411+00:00",
    "lastUpdatedDate": "2023-05-17T19:18:48.870209+00:00",
    "policyStoreId": "PSEXAMPLEabcdefg111111",
    "policyTemplateId": "PTEXAMPLEabcdefg111111"
}
```

------

# Amazon Verified Permissions 예제 템플릿 연결 정책
<a name="policy-templates-example-policies"></a>

**샘플 정책 스토어** 방법을 사용하여 Verified Permissions에서 정책 스토어를 생성하면 선택한 샘플 프로젝트에 대한 사전 정의된 정책, 정책 템플릿 및 스키마를 사용하여 정책 스토어가 생성됩니다. 다음과 같은 Verified Permissions 템플릿 연결 정책 예제를 샘플 정책 스토어 및 해당 정책, 정책 템플릿 및 스키마와 함께 사용할 수 있습니다.

## PhotoFlash 예제
<a name="policy-templates-example-policies-photoflash"></a>

다음 예제에서는 정책 템플릿을 사용하는 템플릿 연결 정책을 생성하는 방법을 보여줍니다. 개별 사용자 및 사진과 **비공개 공유 사진에 대한 제한된 액세스 권한을 부여합니다**.

**참고**  
Cedar 정책 언어에서는 엔터티를 `in` 자체로 간주합니다. 따라서 `principal in User::"Alice"`는 `principal == User::"Alice"`와 같습니다.

```
permit (
 principal in PhotoFlash::User::"Alice",
 action in PhotoFlash::Action::"SharePhotoLimitedAccess",
 resource in PhotoFlash::Photo::"VacationPhoto94.jpg"
 );
```

다음 예제에서는 정책 템플릿을 사용하는 템플릿 연결 정책을 생성하는 방법을 보여줍니다. 개별 사용자 및 앨범과 **비공개 공유 사진에 대한 제한된 액세스 권한을 부여합니다**.

```
permit (
 principal in PhotoFlash::User::"Alice",
 action in PhotoFlash::Action::"SharePhotoLimitedAccess",
 resource in PhotoFlash::Album::"Italy2023"
 );
```

다음 예제에서는 정책 템플릿을 사용하는 템플릿 연결 정책을 생성하는 방법을 보여줍니다. 친구 그룹 및 개별 사진과 **비공개 공유 사진에 대한 제한된 액세스 권한을 부여합니다**.

```
permit (
 principal in PhotoFlash::FriendGroup::"Jane::MySchoolFriends",
 action in PhotoFlash::Action::"SharePhotoLimitedAccess",
 resource in PhotoFlash::Photo::"VacationPhoto94.jpg"
 );
```

다음 예제에서는 정책 템플릿을 사용하는 템플릿 연결 정책을 생성하는 방법을 보여줍니다. 친구 그룹 및 앨범과 **비공개 공유 사진에 대한 제한된 액세스 권한을 부여합니다**.

```
permit (
 principal in PhotoFlash::FriendGroup::"Jane::MySchoolFriends",
 action in PhotoFlash::Action::"SharePhotoLimitedAccess",
 resource in PhotoFlash::Album::"Italy2023"
 );
```

다음 예제에서는 정책 템플릿을 사용하는 템플릿 연결 정책을 생성하는 방법을 보여줍니다. 친구 그룹 및 개별 사진과 **비공개 공유 사진에 대한 전체 액세스 권한을 부여합니다**.

```
permit (
 principal in PhotoFlash::UserGroup::"Jane::MySchoolFriends",
 action in PhotoFlash::Action::"SharePhotoFullAccess",
 resource in PhotoFlash::Photo::"VacationPhoto94.jpg"
 );
```

다음 예제에서는 정책 템플릿 **계정에서 사용자 차단**을 사용하는 템플릿 연결 정책을 생성하는 방법을 보여줍니다.

```
forbid(
 principal == PhotoFlash::User::"Bob",
 action,
 resource in PhotoFlash::Account::"Alice-account"
 );
```

## DigitalPetStore 예제
<a name="policy-templates-example-policies-digitalpetstore"></a>

DigitalPetStore 샘플 정책 스토어에는 정책 템플릿이 포함되어 있지 않습니다. **DigitalPetStore** 샘플 정책 스토어를 만든 후 왼쪽의 탐색 창에서 **정책**을 선택하여 정책 스토어에 포함된 정책을 볼 수 있습니다.

## TinyToDo 예제
<a name="policy-templates-example-policies-tinytodo"></a>

다음 예제에서는 최종 사용자에게 개별 사용자 및 작업 목록에 대한 액세스 권한을 부여하는 정책 템플릿을 사용하는 템플릿 연결 정책을 생성하는 방법을 보여줍니다.

```
permit (
    principal == TinyTodo::User::"https://cognito-idp.us-east-1.amazonaws.com/us-east-1_h2aKCU1ts|5ae0c4b1-6de8-4dff-b52e-158188686f31|bob",
    action in [TinyTodo::Action::"ReadList", TinyTodo::Action::"ListTasks"],
    resource == TinyTodo::List::"1"
);
```

다음 예제에서는 개별 사용자 및 작업 목록에 대한 편집기 액세스 권한을 부여하는 정책 템플릿을 사용하는 템플릿 연결 정책을 생성하는 방법을 보여줍니다.

```
permit (
    principal == TinyTodo::User::"https://cognito-idp.us-east-1.amazonaws.com/us-east-1_h2aKCU1ts|5ae0c4b1-6de8-4dff-b52e-158188686f31|bob",
    action in [
        TinyTodo::Action::"ReadList",
        TinyTodo::Action::"UpdateList",
        TinyTodo::Action::"ListTasks",
        TinyTodo::Action::"CreateTask",
        TinyTodo::Action::"UpdateTask",
        TinyTodo::Action::"DeleteTask"
    ],
    resource == TinyTodo::List::"1"
);
```