

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

# 에 대한 액세스 결정 AWS KMS keys
<a name="determining-access"></a>

현재에 액세스할 수 있는 사람 또는 대상의 전체 범위를 확인하려면 KMS 키의 키 정책 AWS KMS key, KMS 키에 적용되는 모든 [권한 부여](grants.md) 및 잠재적으로 모든 AWS Identity and Access Management (IAM) 정책을 검사해야 합니다. KMS 키의 가능한 사용 범위를 파악하거나 규정 또는 감사 요구 사항을 준수하기 위해 이 작업을 수행할 수 있습니다. 다음 주제는 현재 KMS 키에 액세스할 수 있는 AWS 보안 주체(ID)의 전체 목록을 생성하는 데 도움이 될 수 있습니다.

**Topics**
+ [키 정책 검사](determining-access-key-policy.md)
+ [IAM 정책 검사](determining-access-iam-policies.md)
+ [권한 부여 검사](determining-access-grants.md)

# 키 정책 검사
<a name="determining-access-key-policy"></a>

[키 정책](key-policies.md)은 KMS 키에 대한 액세스를 제어하는 기본적인 방법입니다. 모든 KMS 키에는 정확히 하나의 키 정책이 있습니다.

키 정책이 [기본 키 정책](key-policy-default.md#key-policy-default-allow-root-enable-iam)으로 구성되거나 포함하는 경우 키 정책은 계정의 IAM 관리자가 IAM 정책을 사용하여 KMS 키에 대한 액세스를 제어하도록 허용합니다. 또한 키 정책이 [다른 AWS 계정](key-policy-modifying-external-accounts.md)에 KMS 키를 사용할 수 있는 권한을 부여하는 경우 외부 계정의 IAM 관리자는 IAM 정책을 사용하여 해당 권한을 위임할 수 있습니다. KMS 키에 액세스할 수 있는 보안 주체의 전체 목록을 결정하려면 [IAM 정책을 검사](determining-access-iam-policies.md)하십시오.

계정[AWS 관리형 키](concepts.md#aws-managed-key)에서 AWS KMS [ 고객 관리형 키](concepts.md#customer-mgn-key) 또는의 키 정책을 보려면 AWS KMS API에서 AWS Management Console 또는 [GetKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyPolicy.html) 작업을 사용합니다. 키 정책을 보려면 KMS 키에 대한 `kms:GetKeyPolicy` 권한이 있어야 합니다. KMS 키에 대한 키 정책을 보는 방법은 [키 정책 보기](key-policy-viewing.md) 단원을 참조하십시오.

키 정책 문서를 검사하고 각 정책 문서의 `Principal` 요소에 지정된 모든 보안 주체를 기록해 둡니다. `Allow` 효과가 있는 정책 설명에서 IAM 사용자, IAM 역할 및 `Principal` 요소의는이 KMS 키 AWS 계정 에 액세스할 수 있습니다.

**참고**  
[조건](policy-conditions.md)을 사용하여 키 정책을 제한하지 않는 한 권한을 허용하는 키 정책문에서 보안 주체를 별표(\$1)로 설정하지 마세요. 별표는 다른 정책 문이 명시적으로 거부하지 않는 한 모든 자격 증명에 KMS 키를 사용할 수 있는 AWS 계정 권한을 부여합니다. 다른의 사용자는 자신의 계정에 해당 권한이 있을 때마다 KMS 키를 사용할 AWS 계정 수 있습니다.

다음 예제는 [기본 키 정책](key-policy-default.md)에 수록된 정책문을 사용하여 이를 수행하는 방법을 보여줍니다.

**Example 정책문 1**  

```
{
  "Sid": "Enable IAM User Permissions",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:root"},
  "Action": "kms:*",
  "Resource": "*"
}
```
정책 설명 1에서 `arn:aws:iam::111122223333:root`는 AWS 계정 111122223333을 참조하는 [AWS 계정 보안 주체](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-accounts)입니다. (계정 루트 사용자가 아닙니다.) 기본적으로를 사용하여 새 KMS 키를 생성 AWS Management Console하거나 프로그래밍 방식으로 새 KMS 키를 생성하지만 키 정책을 제공하지 않는 경우 이와 같은 정책 문이 키 정책 문서에 포함됩니다.  
에 대한 액세스를 허용하는 문이 있는 키 정책 문서를 AWS 계정 사용하면 [계정의 IAM 정책이 KMS 키에 대한 액세스를 허용할 수 있습니다](key-policy-default.md#key-policy-default-allow-root-enable-iam). 즉 이 계정의 사용자와 역할은 키 정책 문서에 보안 주체로 명시되지 않은 경우에도 KMS 키에 액세스할 수 있습니다. 보안 주체로 AWS 계정 나열된 모든의 모든 [IAM 정책을 검사](determining-access-iam-policies.md)하여이 KMS 키에 대한 액세스를 허용하는지 확인합니다.

**Example 정책문 2**  

```
{
  "Sid": "Allow access for Key Administrators",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/KMSKeyAdmins"},
  "Action": [
    "kms:Describe*",
    "kms:Put*",
    "kms:Create*",
    "kms:Update*",
    "kms:Enable*",
    "kms:Revoke*",
    "kms:List*",
    "kms:Disable*",
    "kms:Get*",
    "kms:Delete*",
    "kms:ScheduleKeyDeletion",
    "kms:CancelKeyDeletion"
  ],
  "Resource": "*"
}
```
정책 설명 2에서는 AWS 계정 111122223333에서 KMSKeyAdmins라는 IAM 역할을 `arn:aws:iam::111122223333:role/KMSKeyAdmins` 참조합니다. 이 역할을 수임할 권한이 있는 사용자는 KMS 키 관리를 위한 관리 작업인 정책 문에 나열된 작업을 수행할 수 있습니다.

**Example 정책문 3**  

```
{
  "Sid": "Allow use of the key",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/EncryptionApp"},
  "Action": [
    "kms:DescribeKey",
    "kms:GenerateDataKey*",
    "kms:Encrypt",
    "kms:ReEncrypt*",
    "kms:Decrypt"
  ],
  "Resource": "*"
}
```
정책 설명 3에서는 EncryptionApp in AWS 계정 111122223333이라는 IAM 역할을 `arn:aws:iam::111122223333:role/EncryptionApp` 참조합니다. 이 역할을 맡을 권한이 있는 보안 주체는 대칭 암호화 KMS 키에 대한 [암호화 작업](kms-cryptography.md#cryptographic-operations)을 포함하여 정책 문에 나열된 작업을 수행할 수 있습니다.

**Example 정책문 4**  

```
{
  "Sid": "Allow attachment of persistent resources",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/EncryptionApp"},
  "Action": [
    "kms:ListGrants",
    "kms:CreateGrant",
    "kms:RevokeGrant"
  ],
  "Resource": "*",
  "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}}
}
```
정책 설명 4에서는 EncryptionApp in AWS 계정 111122223333이라는 IAM 역할을 `arn:aws:iam::111122223333:role/EncryptionApp` 참조합니다. 이 역할을 맡을 수 있는 권한을 지닌 보안 주체는 정책 문에 수록된 작업을 수행할 수 있습니다. **예제 정책문 3**에서 허용된 작업과 결합된 이러한 작업은 [AWS KMS와 통합되는 대부분의AWS 서비스](service-integration.md), 특히 [권한 부여](grants.md)를 사용하는 서비스에 KMS 키 사용을 위임하는 데 필요한 작업입니다. `Condition` 요소의 [kms:GrantIsForAWSResource](conditions-kms.md#conditions-kms-grant-is-for-aws-resource) 값은 위임이 AWS KMS 와 통합되고 권한 부여를 사용하는 AWS 서비스인 경우에만 위임이 허용되도록 합니다.

키 정책 문서에서 보안 주체를 지정할 수 있는 모든 다양한 방법을 알아보려면 *IAM 사용 설명서*의 [보안 주체 지정](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Principal_specifying)을 참조하십시오.

 AWS KMS 키 정책에 대한 자세한 내용은 섹션을 참조하세요[의 키 정책 AWS KMS](key-policies.md).

# IAM 정책 검사
<a name="determining-access-iam-policies"></a>

키 정책 및 권한 부여 외에도 [IAM 정책](iam-policies.md)을 사용하여 KMS 키에 대한 액세스를 허용할 수도 있습니다. IAM 정책과 키 정책이 상호 작용하는 방식에 대한 자세한 내용은 [AWS KMS 권한 문제 해결](policy-evaluation.md) 단원을 참조하십시오.

현재 어떤 보안 주체가 IAM 정책을 통해 KMS 키에 액세스할 수 있는지 알아보기 위해, 브라우저 기반의 [IAM 정책 시뮬레이터](https://policysim.aws.amazon.com/) 도구를 사용하거나 IAM API에 요청을 제출할 수 있습니다.

**Contents**
+ [IAM 정책 시뮬레이터로 IAM 정책 검사](#determining-access-iam-policy-simulator)
+ [IAM API로 IAM 정책 검사](#determining-access-iam-api)

## IAM 정책 시뮬레이터로 IAM 정책 검사
<a name="determining-access-iam-policy-simulator"></a>

IAM 정책 시뮬레이터에서 어떤 보안 주체가 IAM 정책을 통해 KMS 키에 액세스할 수 있는지 알아볼 수 있습니다.

**IAM 정책 시뮬레이터를 사용해 KMS 키에 대한 액세스를 파악하려면**

1. 에 로그인 AWS Management Console 한 다음에서 IAM 정책 시뮬레이터를 엽니다[https://policysim.aws.amazon.com/](https://policysim.aws.amazon.com/).

1. **사용자, 그룹 및 역할(Users, Groups, and Roles)** 창에서 정책을 시뮬레이션할 사용자, 그룹 또는 역할을 선택합니다.

1. (선택 사항) 시뮬레이션을 생략할 정책 옆 확인란의 선택을 취소합니다. 모든 정책을 시뮬레이션하려면 모든 정책을 선택해 둡니다.

1. [**Policy Simulator**] 창에서 다음과 같이 실행합니다.

   1. [**Select service**]에서 [**Key Management Service**]를 선택합니다.

   1. 특정 AWS KMS 작업을 시뮬레이션하려면 **작업 선택**에서 시뮬레이션할 작업을 선택합니다. 모든 AWS KMS 작업을 시뮬레이션하려면 **모두 선택을** 선택합니다.

1. (선택 사항) 정책 시뮬레이터는 기본적으로 모든 KMS 키에 대한 액세스를 시뮬레이션합니다. 특정 KMS 키에 대한 액세스를 시뮬레이션하려면 **시뮬레이션 설정(Simulation Settings)**을 선택한 후 시뮬레이션할 KMS 키의 Amazon 리소스 이름(ARN)을 입력합니다.

1. **Run Simulation(시뮬레이션 실행)**을 선택합니다.

[**Results**] 섹션에서 시뮬레이션 결과를 볼 수 있습니다. AWS 계정의 모든 사용자, 그룹, 역할에 대해 2\$16단계를 반복합니다.

## IAM API로 IAM 정책 검사
<a name="determining-access-iam-api"></a>

IAM API를 사용해 IAM 정책을 프로그래밍 방식으로 검사할 수 있습니다. 다음 절차는 이 방법의 개요를 제공합니다.

1. 키 정책에 보안 주체로 AWS 계정 나열된 각에 대해(즉, 형식으로 지정된 각 [AWS 계정 보안 주체](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-accounts): `"Principal": {"AWS": "arn:aws:iam::111122223333:root"}`) IAM API의 [ListUsers](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html) 및 [ListRoles](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRoles.html) 작업을 사용하여 계정의 모든 사용자와 역할을 가져옵니다.

1. 목록에 있는 각 사용자 및 역할에 대해 IAM API에서 [SimulatePrincipalPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_SimulatePrincipalPolicy.html) 작업을 사용하여 다음 파라미터를 전달합니다.
   + `PolicySourceArn`에 대해, 목록에서 사용자나 역할의 Amazon 리소스 이름(ARN)을 지정합니다. `SimulatePrincipalPolicy` 요청별로 한 `PolicySourceArn`만 지정할 수 있으므로, 이 작업을 목록의 각 사용자 및 역할마다 한 번씩 여러 차례 호출해야 합니다.
   + `ActionNames` 목록에서 시뮬레이션할 모든 AWS KMS API 작업을 지정합니다. 모든 AWS KMS API 작업을 시뮬레이션하려면를 사용합니다`kms:*`. 개별 AWS KMS API 작업을 테스트하려면 각 API 작업 앞에 "`kms:`", 예: "`kms:ListKeys`"를 붙입니다. AWS KMS API 작업의 목록을 보려면 *AWS Key Management Service API 참조*의 [작업](https://docs.aws.amazon.com/kms/latest/APIReference/API_Operations.html)을 참조하세요.
   + (선택 사항) 사용자나 역할이 특정 KMS 키에 액세스할 수 있는지 판단하려면 `ResourceArns` 파라미터를 이용해 KMS 키의 Amazon 리소스 이름(ARN) 목록을 지정합니다. 사용자나 역할이 모든 KMS 키에 액세스할 수 있는지 판단하기 위해 `ResourceArns` 파라미터를 생략하세요.

IAM은 각각의 `SimulatePrincipalPolicy` 요청에 대해 `allowed`, `explicitDeny`, 또는 `implicitDeny`의 평가 결정으로 응답합니다. 의 평가 결정이 포함된 각 응답`allowed`에 대해 응답에는 허용되는 특정 AWS KMS API 작업의 이름이 포함됩니다. 평가에서 사용된 KMS 키의 ARN도 포함되어 있습니다.

# 권한 부여 검사
<a name="determining-access-grants"></a>

권한 부여는 사용자 또는와 통합된 AWS 서비스가 KMS 키를 사용할 AWS KMS 수 있는 방법과 시기를 지정하는 데 사용할 수 있는 권한을 지정하는 고급 메커니즘입니다. 권한 부여는 KMS 키에 연결되며, 각 권한 부여에는 KMS 키를 사용할 권한을 받는 보안 주체, 허용되는 작업 목록이 포함됩니다. 권한 부여는 키 정책의 대안으로, 특정한 사용 사례에 유용합니다. 자세한 내용은 [의 권한 부여 AWS KMS](grants.md) 단원을 참조하십시오.

KMS 키에 대한 권한 부여 목록을 가져오려면 AWS KMS [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html) 작업을 사용합니다. KMS 키에 대한 권한 부여를 검사하여 현재 이러한 권한 부여를 통해 KMS 키를 사용할 권한이 있는 사람 또는 항목을 파악할 수 있습니다. 예를 들어, 다음은 AWS CLI에서 [list-grants](https://docs.aws.amazon.com/cli/latest/reference/kms/list-grants.html) 명령으로부터 얻은 권한 부여의 JSON 표현입니다.

```
{"Grants": [{
  "Operations": ["Decrypt"],
  "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
  "Name": "0d8aa621-43ef-4657-b29c-3752c41dc132",
  "RetiringPrincipal": "arn:aws:iam::123456789012:root",
  "GranteePrincipal": "arn:aws:sts::111122223333:assumed-role/aws:ec2-infrastructure/i-5d476fab",
  "GrantId": "dc716f53c93acacf291b1540de3e5a232b76256c83b2ecb22cdefa26576a2d3e",
  "IssuingAccount": "arn:aws:iam::111122223333:root",
  "CreationDate": 1.444151834E9,
  "Constraints": {"EncryptionContextSubset": {"aws:ebs:id": "vol-5cccfb4e"}}
}]}
```

KMS 키를 사용할 권한이 있는 사람이나 항목을 알아보려면 `"GranteePrincipal"` 요소를 확인하십시오. 앞의 예에서 피부여자 보안 주체는 EC2 인스턴스 i-5d476fab와 연결된 위임된 역할 사용자입니다. EC2 인프라는 이 역할을 사용해 암호화된 EBS 볼륨 vol-5cccfb4e를 인스턴스에 연결합니다. 이 경우, 사용자가 이전에 이 KMS 키로 보호 받는 암호화된 EBS 볼륨을 생성했기 때문에 EC2 인프라 역할은 KMS 키를 사용할 권한이 있습니다. 그리고 사용자는 EC2 인스턴스에 볼륨을 연결합니다.

다음은 AWS CLI에서 [list-grants](https://docs.aws.amazon.com/cli/latest/reference/kms/list-grants.html) 명령으로부터 얻은 권한 부여의 또 다른 JSON 표현 예시입니다. 다음 예제에서 피부여자 보안 주체는 또 다른 보안 주체입니다 AWS 계정.

```
{"Grants": [{
  "Operations": ["Encrypt"],
  "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
  "Name": "",
  "GranteePrincipal": "arn:aws:iam::444455556666:root",
  "GrantId": "f271e8328717f8bde5d03f4981f06a6b3fc18bcae2da12ac38bd9186e7925d11",
  "IssuingAccount": "arn:aws:iam::111122223333:root",
  "CreationDate": 1.444151269E9
}]}
```