

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

# 주요 Amazon SNS 액세스 정책 개념
<a name="sns-access-policy-language-key-concepts"></a>

다음 섹션에서는 액세스 정책 언어를 사용하기 위해 알아두어야 할 개념을 설명합니다. 이 개념들은 논리적 순서대로 제시됩니다. 즉 가장 먼저 알아야 할 용어가 목록의 맨 위에 있습니다.

## 권한
<a name="permissions"></a>

*권한(permission)*은 특정 리소스에 대해 어떤 종류의 액세스를 허용하거나 허용하지 않는 개념입니다. 기본적으로 권한은 "D에 해당된다면 A는 C에게 B를 할 수 있다/없다"의 형식을 띱니다. 예를 들어, *Jane*(A)은 *HTTP 프로토콜을 사용*(D)한다면 *TopicA*(C)에 *게시*(B)할 권한을 갖습니다. Jane이 TopicA에 게시할 때마다 서비스에서는 그녀에게 권한이 있는지 그리고 그 요청이 권한에 설정된 조건을 충족하는지 확인합니다.

## 문
<a name="statement"></a>

*문(statement)*은 단일 권한에 대한 공식적인 설명이며 액세스 정책 언어로 작성됩니다. 설명은 항상 *정책*(다음 개념 설명 참조)이라고 부르는 더 광범위한 컨테이너 문서의 일부로 작성합니다.

## 정책
<a name="policy"></a>

*정책(policy)*은 하나 이상의 문에 대한 컨테이너의 역할을 수행하는 문서(액세스 정책 언어에서 작성됨)입니다. 예를 들어, 하나의 정책이 2개의 설명을 포함할 수 있습니다. 그중 하나는 Jane이 이메일 프로토콜을 사용하여 구독할 수 있다고, 다른 하나는 Bob이 Topic A에 게시할 수 없다고 규정합니다. 다음 그림에서 보여 주는 것처럼, 상응하는 시나리오는 2개의 정책을 갖습니다. 하나는 Jane이 이메일 프로토콜을 사용하여 구독할 수 있다고, 다른 하나는 Bob이 Topic A에 게시할 수 없다고 규정합니다.

![\[Amazon SNS에서 정책 스테이트먼트를 구성하는 두 가지 방법을 비교합니다. 왼쪽의 단일 정책(정책 A)에 두 개의 스테이트먼트가 포함되어 있습니다. 오른쪽에는 동일한 두 스테이트먼트가 두 정책으로 나뉘며 각 정책에는 하나의 스테이트먼트가 포함됩니다. 다이어그램은 이러한 두 접근 방식이 권한을 정의하고 적용하는 방식과 동등하다는 것을 보여줍니다.\]](http://docs.aws.amazon.com/ko_kr/sns/latest/dg/images/AccessPolicyLanguage_Statement_and_Policy.gif)


정책 문서에는 ASCII 문자만 사용할 수 있습니다. `aws:SourceAccount` 및 `aws:SourceOwner`를 활용하여 비 ASCII 문자가 포함된 다른 AWS 서비스의 ARNs을 플러그인해야 하는 시나리오를 해결할 수 있습니다. [`aws:SourceAccount`과 `aws:SourceOwner` 비교](sns-access-policy-use-cases.md#source-account-versus-source-owner) 간 차이점을 참조하세요.



## Issuer
<a name="issuer"></a>

*발행자(issuer)*는 리소스에 대한 권한을 부여하기 위해 정책을 작성하는 사람입니다. 발급자(정의상)는 항상 리소스 소유자입니다. AWS 는 AWS 서비스 사용자가 소유하지 않은 리소스에 대한 정책을 생성하도록 허용하지 않습니다. John이 리소스 소유자인 경우 John이 해당 리소스에 대한 권한을 부여하기 위해 작성한 정책을 제출할 때 John의 자격 증명을 AWS 인증합니다.

## 위탁자
<a name="principal"></a>

*보안 주체*는 정책에 따라 권한을 받는 사람입니다. 보안 주체는 "A는 D가 적용되는 경우 B에게 B를 할 수 있는 권한이 있습니다."라는 명령문에서 A입니다. 책에서 보안 주체를 "모든 사람"으로 설정할 수 있습니다. 즉, 모든 사람을 나타내는 와일드카드를 지정할 수 있습니다. 예를 들어, 요청자의 신원이 아닌, 요청자의 IP 주소와 같은 다른 식별 특성에 따라 액세스를 제한하려는 경우 이와 같이 할 수 있습니다.

## 작업
<a name="action"></a>

*작업*은 보안 주체가 수행할 수 있는 권한이 있는 작업입니다. "D에 해당된다면 A는 C에게 B를 할 수 있다" 설명에서 작업은 B입니다. 일반적으로 작업은 요청의 작업일 뿐입니다 AWS. 예를 들어, Jane이 `Action``=Subscribe`를 사용하여 Amazon SNS에 요청을 전송합니다. 하나의 정책에 하나 이상의 작업을 지정할 수 있습니다.

## Resource
<a name="resource"></a>

*리소스*는 보안 주체가 액세스를 요청하는 개체입니다. "D에 해당된다면 A는 C에게 B를 할 수 있다" 설명에서 리소스는 C입니다.

## 조건과 키
<a name="conditions"></a>

*조건(conditions)*은 권한에 대한 제한 또는 세부 정보입니다. "D에 해당된다면 A는 C에게 B를 할 수 있다" 설명에서 조건은 D입니다. 정책에서 조건을 지정하는 부분이 가장 세부적이고 복잡할 수 있습니다. 일반적인 조건은 다음 항목과 관련 있습니다.
+ 날짜와 시간(예: 요청이 특정 일보다 먼저 도착해야 함)
+ IP 주소(예: 요청자의 IP 주소가 특정 CIDR 범위에 속해야 함)

*키*는 액세스 제한의 기준이 되는 구체적 특성입니다. 이를테면 요청의 날짜와 시간이 키가 될 수 있습니다.

*조건*과 *키*를 함께 사용하여 제한을 표현합니다. 실제로 제한을 구현하는 방식은 예시를 통해 가장 쉽게 이해할 수 있습니다. 2010년 5월 30일 이전으로 액세스를 제한하려는 경우 `DateLessThan`이라는 조건을 사용합니다. 호출된 키 `aws:CurrentTime`을 사용하여 값 `2010-05-30T00:00:00Z`로 설정합니다. AWS 에서는 사용할 수 있는 조건과 키를 정의합니다. AWS 서비스 자체(예: Amazon SQS 또는 Amazon SNS)는 서비스별 키도 정의할 수 있습니다. 자세한 내용은 [Amazon SNS API 권한: 작업 및 리소스 참조](sns-access-policy-language-api-permissions-reference.md) 단원을 참조하십시오.

## 요청자
<a name="requester"></a>

*요청자는* AWS 서비스에 요청을 보내고 특정 리소스에 대한 액세스를 요청하는 사람입니다. 요청자는에 "D AWS 가 적용되는 경우 B를 C로 할 수 있나요?"라는 요청을 보냅니다.

## 평가
<a name="evaluation"></a>

*평가는* AWS 서비스가 해당 정책에 따라 수신 요청을 거부하거나 허용해야 하는지 여부를 결정하는 데 사용하는 프로세스입니다. 평가 로직에 대한 자세한 내용은 [평가 로직](sns-access-policy-language-evaluation-logic.md)에서 확인하세요.

## Effect
<a name="effect"></a>

*효과(effect)*는 정책 설명에서 평가 시점에 반환해야 할 결과입니다. 정책 설명을 작성할 때 이 값을 지정하며, 가능한 값은 *거부(deny)*와 *허용(allow)*입니다.

예를 들어, 남극 대륙에서 보내는 모든 요청을 *거부*하는 정책 설명을 작성할 수 있습니다(효과=요청에서 남극 대륙에 할당된 IP 주소를 사용할 경우 거부). 또는 남극 대륙에서 *보내지 않은* 모든 요청을 *허용*하라는 정책 설명을 작성할 수 있습니다(효과=남극 대륙에서 보내지 않은 요청이면 허용). 두 설명이 동일한 기능을 할 것처럼 보이지만 액세스 정책 언어 로직에서는 서로 다릅니다. 자세한 내용은 [평가 로직](sns-access-policy-language-evaluation-logic.md) 단원을 참조하십시오.

효과에 대해 지정할 수 있는 값이 2개뿐이지만(허용 또는 거부) 정책 평가 시점에는 서로 다른 3가지 결과가 나올 수 있습니다. *기본 거부*, *허용* 또는 *명시적 거부*입니다. 자세한 정보는 다음 개념과 [평가 로직](sns-access-policy-language-evaluation-logic.md)에서 확인하세요.

## 기본 거부
<a name="Define_SoftDeny"></a>

*기본 거부(default deny)*는 허용 또는 명시적 거부가 없는 정책의 기본 결과입니다.

## 허용
<a name="allow"></a>

*허용(allow)*은 효과=기술된 모든 조건을 충족할 경우 허용인 설명의 결과입니다. 예: 2010년 4월 30일 오후 1:00 이전에 수신된 요청이면 허용. 허용은 모든 기본 거부를 무시하지만 명시적 거부는 무시하지 않습니다.

## 명시적 거부
<a name="Define_HardDeny"></a>

*명시적 거부(explicit deny)*는 효과=기술된 모든 조건을 충족할 경우 거부인 설명의 결과입니다. 예: 남극 대륙에서 보낸 모든 요청 거부. 남극 대륙에서 보낸 모든 요청은 다른 어떤 정책에서 허용하더라도 항상 거부됩니다.