

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

# Verified·Access 정책
<a name="auth-policies"></a>

AWS Verified Access 정책을 사용하면에서 호스팅되는 애플리케이션에 액세스하기 위한 규칙을 정의할 수 있습니다 AWS. 정책 AWS 언어인 Cedar로 작성됩니다. Cedar를 사용하면 Verified·Access와 함께 사용하도록 구성한 ID 또는 디바이스 기반 신뢰 공급자로부터 전송된 신뢰 데이터를 기준으로 평가되는 정책을 생성할 수 있습니다.

Cedar 정책 언어에 대한 더 자세한 내용은 [Cedar 참조 안내서](https://docs.cedarpolicy.com/)를 참조하십시오.

[Verified·Access 그룹을 생성](create-verified-access-group.md)하거나 [Verified·Access 엔드포인트를 생성](verified-access-endpoints.md)할 때 Verified·Access 정책을 정의할 수 있는 옵션이 있습니다. Verified Access 정책을 정의하지 않고 그룹 또는 엔드포인트를 생성할 수 있지만 정책을 정의할 때까지 모든 액세스 요청이 차단됩니다. 또는 기존 Verified Access 그룹 또는 엔드포인트를 생성한 후 정책을 추가하거나 변경할 수도 있습니다.

**Topics**
+ [정책 문](auth-policies-policy-statement-struct.md)
+ [내장 연산자](built-in-policy-operators.md)
+ [정책 평가](auth-policies-policy-eval.md)
+ [정책 논리 단락](auth-policies-policy-eval-short-circ.md)
+ [정책 예제](trust-data-iam-add-pol.md)
+ [정책 도우미](policy-assistant.md)

# Verified Access 정책 문 구조
<a name="auth-policies-policy-statement-struct"></a>

다음 표는 Verified Access 정책의 구조를 보여줍니다.


| 구성 요소 | 구문 | 
| --- | --- | 
| effect | `permit \| forbid` | 
| scope | `(principal, action, resource)` | 
| 조건 절 | <pre>when {<br />    context.policy-reference-name.attribute-name             <br />};</pre>  | 

## 정책 구성 요소
<a name="auth-policies-policy-components"></a>

Verified Access 정책에는 다음 구성 요소가 포함되어 있습니다.
+ **효과** - 액세스를 `permit`(허용) 또는 `forbid`(거부)합니다.
+ **범위** – 효과가 적용되는 위탁자, 작업 및 리소스입니다. 특정 위탁자, 작업 또는 리소스를 식별하지 않음으로써 Cedar의 범위를 정의하지 않은 상태로 둘 수 있습니다. 이 경우 가능한 모든 주체, 작업 및 리소스에 정책이 적용됩니다.
+ **조건 절** - 효과가 적용되는 컨텍스트입니다.

**중요**  
Verified Access의 경우 조건 조항의 신뢰 데이터를 참조하여 정책을 완전히 표현합니다. **정책 범위는 항상 정의되지 않은 상태로 유지해야 합니다**. 그런 다음 조건 조항에서 ID 및 디바이스 신뢰 컨텍스트를 사용하여 액세스를 지정할 수 있습니다.

## 설명
<a name="auth-policies-policy-comments"></a>

 AWS Verified Access 정책에 설명을 포함할 수 있습니다. 주석은 `//`로 시작하고 줄바꿈 문자로 끝나는 줄로 정의됩니다.

다음 예는 정책의 주석을 보여줍니다.

```
// grants access to users in a specific domain using trusted devices
permit(principal, action, resource)
when {
  // the user's email address is in the @example.com domain
  context.idc.user.email.address.contains("@example.com")
  // Jamf thinks the user's computer is low risk or secure.
  && ["LOW", "SECURE"].contains(context.jamf.risk)
};
```

## 여러 절
<a name="auth-policies-multiple-clauses"></a>

`&&` 연산자를 사용하여 정책 문에 조건 절을 두 개 이상 사용할 수 있습니다.

```
permit(principal,action,resource)
when{
 context.policy-reference-name.attribute1 &&
 context.policy-reference-name.attribute2
};
```

추가 예제는 다음([Verified Access 정책 예제](trust-data-iam-add-pol.md))을 참조하십시오.

## 예약 문자
<a name="auth-policies-semicolon"></a>

다음 예제는 컨텍스트 속성이 정책 언어의 예약 문자인 `:`(세미콜론)을 사용하는 경우 정책을 작성하는 방법을 보여줍니다.

```
permit(principal, action, resource) 
when {
    context.policy-reference-name["namespace:groups"].contains("finance")
};
```

# Verified Access 정책의 내장 연산자
<a name="built-in-policy-operators"></a>

에서 설명한 대로 다양한 조건을 사용하여 AWS Verified Access 정책의 컨텍스트를 생성할 때 `&&` 연산자를 사용하여 조건을 추가할 [Verified Access 정책 문 구조](auth-policies-policy-statement-struct.md)수 있습니다. 정책 조건에 추가적인 표현력을 추가하는 데 사용할 수 있는 다른 내장 연산자도 많이 있습니다. 다음 표에는 참조용으로 제공되는 모든 내장 연산자가 나와 있습니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/verified-access/latest/ug/built-in-policy-operators.html)

# Verified Access 정책 평가
<a name="auth-policies-policy-eval"></a>

정책 문서는 하나 이상의 정책 설명(`permit` 또는 `forbid` 설명)의 집합입니다. 정책은 조건부 조항(`when` 진술)이 참일 경우 적용됩니다. 정책 문서에 액세스를 허용하려면 문서에 있는 하나 이상의 허가 정책이 적용되어야 하며 금지 정책은 적용할 수 없습니다. 허가 정책이 적용되지 않고/않거나 하나 이상의 금지 정책이 적용되는 경우에는 정책 문서가 액세스를 거부합니다. Verified Access 그룹과 Verified Access 엔드포인트 모두에 대해 정책 문서를 정의한 경우 두 문서 모두 액세스를 허용해야 합니다. Verified Access 엔드포인트에 대한 정책 문서를 정의하지 않은 경우 Verified Access 그룹 정책에만 액세스가 필요합니다.

AWS Verified Access 는 정책을 생성할 때 구문을 검증하지만 조건부 절에 입력한 데이터는 검증하지 않습니다.

# Verified Access 정책 논리 단락
<a name="auth-policies-policy-eval-short-circ"></a>

주어진 컨텍스트에 존재할 수도 있고 존재하지 않을 수도 있는 데이터를 평가하는 AWS Verified Access 정책을 작성할 수도 있습니다. 존재하지 않는 컨텍스트의 데이터를 참조하는 경우 Cedar는 오류를 생성하고 사용자의 의도와 상관없이 정책을 평가하여 액세스를 거부합니다. 예를 들어, 이 컨텍스트에 `fake_provider`와(과) `bogus_key`이(가) 존재하지 않으므로 거부로 이어질 수 있습니다.

```
permit(principal, action, resource) when {
  context.fake_provider.bogus_key > 42
};
```

이러한 상황을 방지하려면 `has` 연산자를 사용하여 키가 있는지 확인할 수 있습니다. `has` 연산자가 거짓을 반환하면 연결된 문장에 대한 추가 평가가 중단되고 Cedar는 존재하지 않는 항목을 참조하려고 시도하면서 오류를 발생하지 않습니다.

```
permit(principal, action, resource) when {
  context.identity.user has "some_key" && context.identity.user.some_key > 42
};
```

이는 서로 다른 두 신뢰 공급자를 참조하는 정책을 지정할 때 가장 유용합니다.

```
permit(principal, action, resource) when {
  // user is in an allowed group
  context.aws_idc.groups has "c242c5b0-6081-1845-6fa8-6e0d9513c107"
  &&( 
    ( 
      // if CrowdStrike data is present, 
      // permit if CrowdStrike's overall assessment is over 50
      context has "crowdstrike" && context.crowdstrike.assessment.overall > 50
    )
    || 
    (
      // if Jamf data is present,
      // permit if Jamf's risk score is acceptable
      context has "jamf" && ["LOW", "NOT_APPLICABLE", "MEDIUM", "SECURE"].contains(context.jamf.risk) 
    )
  )
};
```

# Verified Access 정책 예제
<a name="trust-data-iam-add-pol"></a>

Verified Access 정책을 사용하여 특정 사용자 및 디바이스에 애플리케이션에 대한 액세스 권한을 부여할 수 있습니다.

**Topics**
+ [예제 1: IAM Identity Center에서 그룹에 액세스 권한 부여](#example-policy-iam-identity-center)
+ [예제 2: 서드 파티 공급자에서 그룹에 액세스 권한 부여](#example-policy-oidc-provider)
+ [예제 3: CrowdStrike를 사용하여 액세스 권한 부여](#example-policy-crowdstrike)
+ [예제 4: 특정 IP 주소 허용 또는 거부](#example-policy-ip-address)

## 예제 1: IAM Identity Center에서 그룹에 액세스 권한 부여
<a name="example-policy-iam-identity-center"></a>

를 사용할 때는 IDs를 사용하여 그룹을 참조하는 AWS IAM Identity Center것이 좋습니다. 이렇게 하면 그룹 이름을 변경할 경우 정책 문의 실행이 종료되는 것을 방지할 수 있습니다.

다음 예제 정책은 확인된 이메일 주소가 있는 지정된 그룹의 사용자에게만 액세스를 허용합니다. 그룹 ID는 c242c5b0-6081-1845-6fa8-6e0d9513c107입니다.

```
permit(principal,action,resource)
when {
    context.policy-reference-name.groups has "c242c5b0-6081-1845-6fa8-6e0d9513c107"
    && context.policy-reference-name.user.email.verified == true
};
```

다음 예제 정책은 사용자가 지정된 그룹에 속하고 확인된 이메일 주소를 갖고 있으며 Jamf 디바이스 위험 점수가 `LOW`인 경우에만 액세스를 허용합니다.

```
permit(principal,action,resource)
when {
    context.policy-reference-name.groups has "c242c5b0-6081-1845-6fa8-6e0d9513c107"
    && context.policy-reference-name.user.email.verified == true
    && context.jamf.risk == "LOW"
};
```

신뢰 데이터에 대한 자세한 내용은 [AWS IAM Identity Center Verified·Access 신뢰 데이터에 대한 컨텍스트](trust-data-iam.md) 섹션을 참조하세요.

## 예제 2: 서드 파티 공급자에서 그룹에 액세스 권한 부여
<a name="example-policy-oidc-provider"></a>

다음 예제 정책은 사용자가 지정된 그룹에 속하고 확인된 이메일 주소를 갖고 있으며 Jamf 디바이스 위험 점수가 LOW인 경우에만 액세스를 허용합니다. 그룹의 이름은 “finance”입니다.

```
permit(principal,action,resource)
when {
     context.policy-reference-name.groups.contains("finance") 
     && context.policy-reference-name.email_verified == true
     && context.jamf.risk == "LOW"
};
```

신뢰 데이터에 대한 자세한 내용은 [Verified Access 신뢰 데이터의 서드 파티 신뢰 공급자 컨텍스트](trust-data-third-party-trust.md) 섹션을 참조하세요.

## 예제 3: CrowdStrike를 사용하여 액세스 권한 부여
<a name="example-policy-crowdstrike"></a>

다음 예제 정책은 전체 평가 점수가 50점을 넘을 때 액세스를 허용합니다.

```
permit(principal,action,resource)
when {
    context.crwd.assessment.overall > 50 
};
```

## 예제 4: 특정 IP 주소 허용 또는 거부
<a name="example-policy-ip-address"></a>

다음 예제 정책은 지정된 IP 주소의 HTTP 요청을 허용합니다.

```
permit(principal, action, resource) 
when {
    context.http_request.client_ip == "192.0.2.1"
};
```

다음 예제 정책은 지정된 IP 주소의 HTTP 요청을 거부합니다.

```
forbid(principal,action,resource) 
when { 
    ip(context.http_request.client_ip).isInRange(ip("192.0.2.1/32")) 
};
```

다음 예제 정책은 지정된 IP 주소의 TCP 요청을 허용합니다.

```
permit(principal, action, resource) 
when {
    context.tcp_flow.client_ip == "192.0.2.1"
};
```

# Verified Access 정책 도우미
<a name="policy-assistant"></a>

Verified Access 정책 도우미는 정책을 테스트하고 개발하는 데 사용할 수 있는 검증된 액세스 콘솔의 도구입니다. 엔드포인트 정책, 그룹 정책 및 신뢰 컨텍스트를 한 화면에 표시하여 정책을 테스트하고 편집할 수 있습니다.

신뢰 컨텍스트 형식은 신뢰 공급자마다 다르며 Verified Access 관리자는 특정 신뢰 제공자가 사용하는 정확한 형식을 모를 수도 있습니다. 따라서 테스트 및 개발 목적으로 한 곳에서 신뢰 컨텍스트와 그룹 및 엔드포인트 정책을 모두 확인하는 것이 매우 유용할 수 있습니다.

다음 섹션에서는 환경의 기능에 대해 설명합니다.

**Topics**
+ [1단계: 리소스 지정](#specify-resources)
+ [2단계: 정책 테스트 및 편집](#test-and-edit)
+ [3단계: 변경 사항 검토 및 적용](#review-and-commit)

## 1단계: 리소스 지정
<a name="specify-resources"></a>

다음 섹션에서는, 사용하려는 AMI를 선택합니다. 또한 사용자(이메일 주소로 식별)를 지정하고 선택적으로 사용자 이름 및/또는 장치 식별자를 지정합니다. 기본적으로 가장 최근의 승인 결정은 지정된 사용자의 Verified Access 로그에서 추출됩니다. 선택적으로 가장 최근의 허용 *또는* 거부 결정을 구체적으로 선택할 수 있습니다.

마지막으로 신뢰 컨텍스트, 권한 부여 결정, 엔드포인트 정책 및 그룹 정책이 모두 다음 화면에 표시됩니다.

**정책 도우미를 열고 리소스를 지정하는 방법**

1. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)에서 Amazon VPC 콘솔을 엽니다.

1. 탐색 창에서 **Verified Access 인스턴스**를 선택한 다음 사용할 인스턴스의 **Verified Access 인스턴스 ID**를 클릭합니다.

1. **정책 지원 시작**을 선택합니다.

1. **사용자 이메일 주소**에 사용자의 이메일 주소를 입력합니다.

1. **Verified Access 엔드포인트**에서 정책을 편집하고 테스트하려는 엔드포인트를 선택합니다.

1. (선택 사항) **이름**에는 사용자 이름을 입력합니다.

1. (선택 사항) **장치 식별자**에 고유한 장치 식별자를 입력합니다.

1. (선택 사항) **인증 결과**에서 사용하려는 최근 인증 결과의 유형을 선택합니다. 기본적으로 최신 권한 부여 결과가 사용됩니다.

1. **다음**을 선택합니다.

## 2단계: 정책 테스트 및 편집
<a name="test-and-edit"></a>

이 페이지에는 작업할 때 사용할 수 있는 다음과 같은 정보가 표시됩니다.
+ 신뢰 제공자가 사용자에게 보낸 신뢰 컨텍스트 및 (선택적으로) 이전 단계에서 지정한 장치입니다.
+ 이전 단계에서 지정된 Verified Access 엔드포인트에 대한 Cedar 정책입니다.
+ 엔드포인트가 속한 Verified Access 그룹에 대한 Cedar 정책입니다.

Verified Access 엔드포인트 및 그룹에 대한 Cedar 정책은 이 페이지에서 편집할 수 있지만 신뢰 컨텍스트는 정적입니다. 이제 이 페이지에서 Cedar 정책과 함께 신뢰 컨텍스트를 볼 수 있습니다.

**정책 테스트** 버튼을 선택하여 신뢰 컨텍스트와 비교하여 정책을 테스트하면 권한 부여 결과가 화면에 표시됩니다. 정책을 편집하고 변경 사항을 다시 테스트하여 필요에 따라 프로세스를 반복할 수 있습니다.

정책 변경에 만족하면 **다음**을 선택하여 정책 지원의 다음 화면으로 계속 진행합니다.

## 3단계: 변경 사항 검토 및 적용
<a name="review-and-commit"></a>

정책 도우미의 마지막 페이지에서 쉽게 검토할 수 있도록 강조 표시된 정책 변경 내용을 확인할 수 있습니다. 이제 마지막으로 검토하고 **변경 사항 적용**을 선택하여 변경 사항을 적용할 수 있습니다.

**이전**을 선택하여 이전 페이지로 돌아가거나 **취소**를 선택하여 정책 지원을 완전히 취소할 수도 있습니다.