

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

# Amazon Keyspaces의 데이터 보호
<a name="data-protection"></a>

 AWS [공동 책임 모델](https://aws.amazon.com/compliance/shared-responsibility-model/) Amazon Keyspaces(Apache Cassandra용)의 데이터 보호에 적용됩니다. 이 모델에 설명된 대로 AWS 는 모든를 실행하는 글로벌 인프라를 보호할 책임이 있습니다 AWS 클라우드. 사용자는 인프라에서 호스팅되는 콘텐츠를 관리해야 합니다. 사용하는 AWS 서비스 의 보안 구성과 관리 태스크에 대한 책임도 사용자에게 있습니다. 데이터 프라이버시에 대한 자세한 내용은 [데이터 프라이버시 FAQ](https://aws.amazon.com/compliance/data-privacy-faq/)를 참조하세요. 유럽의 데이터 보호에 대한 자세한 내용은 *AWS 보안 블로그*의 [AWS 공동 책임 모델 및 GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) 블로그 게시물을 참조하세요.

데이터 보호를 위해 자격 증명을 보호하고 AWS 계정 AWS IAM Identity Center 또는 AWS Identity and Access Management (IAM)를 사용하여 개별 사용자를 설정하는 것이 좋습니다. 이렇게 하면 개별 사용자에게 자신의 직무를 충실히 이행하는 데 필요한 권한만 부여됩니다. 또한 다음과 같은 방법으로 데이터를 보호하는 것이 좋습니다.
+ 각 계정에 다중 인증(MFA)을 사용하세요.
+ SSL/TLS를 사용하여 AWS 리소스와 통신합니다. TLS 1.2는 필수이며 TLS 1.3을 권장합니다.
+ 를 사용하여 API 및 사용자 활동 로깅을 설정합니다 AWS CloudTrail. CloudTrail 추적을 사용하여 AWS 활동을 캡처하는 방법에 대한 자세한 내용은 *AWS CloudTrail 사용 설명서*의 [ CloudTrail 추적 작업을](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html) 참조하세요.
+  AWS 암호화 솔루션과 내부의 모든 기본 보안 제어를 사용합니다 AWS 서비스.
+ Amazon S3에 저장된 민감한 데이터를 검색하고 보호하는 데 도움이 되는 Amazon Macie와 같은 고급 관리형 보안 서비스를 사용하세요.
+ 명령줄 인터페이스 또는 API를 AWS 통해에 액세스할 때 FIPS 140-3 검증 암호화 모듈이 필요한 경우 FIPS 엔드포인트를 사용합니다. 사용 가능한 FIPS 엔드포인트에 대한 자세한 내용은 [Federal Information Processing Standard(FIPS) 140-3](https://aws.amazon.com/compliance/fips/)을 참조하세요.

고객의 이메일 주소와 같은 기밀 정보나 중요한 정보는 태그나 **이름** 필드와 같은 자유 형식 텍스트 필드에 입력하지 않는 것이 좋습니다. 여기에는 Amazon Keyspaces 또는 기타 AWS 서비스 에서 콘솔, API AWS CLI또는 AWS SDKs를 사용하여 작업하는 경우가 포함됩니다. 이름에 사용되는 태그 또는 자유 형식 텍스트 필드에 입력하는 모든 데이터는 청구 또는 진단 로그에 사용될 수 있습니다. 외부 서버로 URL을 제공할 때 해당 서버에 대한 요청을 검증하기 위해 자격 증명 정보를 URL에 포함해서는 안 됩니다.

**Topics**
+ [Amazon Keyspaces에서 저장 시 암호화](EncryptionAtRest.md)
+ [Amazon Keyspaces에서 전송 중 암호화](encryption-in-transit.md)
+ [Amazon Keyspaces의 인터네트워크 트래픽 개인 정보](inter-network-traffic-privacy.md)

# Amazon Keyspaces에서 저장 시 암호화
<a name="EncryptionAtRest"></a>

Amazon Keyspaces(Apache Cassandra용) *저장 시 암호화*는 [AWS Key Management Service (AWS KMS)](https://aws.amazon.com/kms/)에 저장된 암호화 키를 사용하여 모든 저장 데이터를 암호화하여 향상된 보안을 제공합니다. 이 기능을 사용하면 중요한 데이터 보호와 관련된 운영 부담 및 복잡성을 줄일 수 있습니다. 저장 시 암호화를 사용하면 엄격한 규정 준수 및 데이터 보호에 대한 규제 요구 사항이 필요한, 보안에 민감한 애플리케이션을 구축할 수 있습니다.

 Amazon Keyspaces 저장 시 암호화는 256비트 고급 암호화 표준(AES-256)을 사용하여 데이터를 암호화합니다. 이는 기본 스토리지에 대한 무단 액세스로부터 데이터의 보안을 유지하는 데 도움을 줍니다.

Amazon Keyspaces는 테이블 및 스트림의 데이터를 투명하게 암호화하고 해독합니다. Amazon Keyspaces는 봉투 암호화와 키 계층 구조를 사용하여 데이터 암호화 키를 보호합니다. AWS KMS 와 통합되어 루트 암호화 키를 저장 및 관리합니다. 암호화 키 계층 구조에 대한 자세한 내용은 [저장 시 암호화: Amazon Keyspaces 작동 방식](encryption.howitworks.md) 섹션을 참조하세요. 봉투 암호화와 같은 AWS KMS 개념에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [AWS KMS 관리 서비스 개념](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html)을 참조하세요.

 새 테이블을 만들 때 다음 *AWS KMS 키(KMS 키)* 중 하나를 선택할 수 있습니다.
+ AWS 소유 키 - 기본 암호화 유형입니다. 키는 Amazon Keyspaces가 소유합니다(추가 비용 없음).
+ 고객 관리형 키 - 이 키는 사용자의 계정에 저장되며 사용자가 생성, 소유 및 관리합니다. 고객 관리형 키를 완전히 제어할 수 있습니다(AWS KMS 요금 적용).

Amazon Keyspaces는 기본 테이블과 동일한 키를 사용하여 변경 데이터 캡처(CDC) 스트림을 자동으로 암호화합니다. CDC에 대한 자세한 내용은 섹션을 참조하세요[Amazon Keyspaces에서 변경 데이터 캡처(CDC) 스트림 작업](cdc.md).

 언제든지 AWS 소유 키 와 고객 관리형 키 간에 전환할 수 있습니다. 콘솔을 사용하거나 프로그래밍 방식으로 CQL 문을 사용하여 새 테이블을 생성하거나 기존 테이블의 KMS 키를 변경할 때 고객 관리형 키를 지정할 수 있습니다. 자세한 방법은 [저장 시 암호화: 고객 관리형 키를 사용하여 Amazon Keyspaces에서 테이블을 암호화하는 방법](encryption.customermanaged.md)을 참조하세요.

 의 기본 옵션을 사용한 저장 시 암호화 AWS 소유 키 는 추가 비용 없이 제공됩니다. 그러나 고객 관리형 키에 대해서는 AWS KMS 비용이 부과됩니다. 요금에 대한 자세한 내용은 [AWS KMS 요금](https://aws.amazon.com/kms/pricing)을 참조하세요.

Amazon Keyspaces 저장 데이터 암호화는 AWS 중국(베이징) 및 AWS 중국(닝샤) 리전을 AWS 리전포함한 모든에서 사용할 수 있습니다. 자세한 내용은 [저장 시 암호화: Amazon Keyspaces 작동 방식](encryption.howitworks.md) 단원을 참조하십시오.

**Topics**
+ [저장 시 암호화: Amazon Keyspaces 작동 방식](encryption.howitworks.md)
+ [저장 시 암호화: 고객 관리형 키를 사용하여 Amazon Keyspaces에서 테이블을 암호화하는 방법](encryption.customermanaged.md)

# 저장 시 암호화: Amazon Keyspaces 작동 방식
<a name="encryption.howitworks"></a>

Amazon Keyspaces(Apache Cassandra용) *저장 시 암호화*는 256비트 고급 암호화 표준(AES-256)을 사용하여 데이터를 암호화합니다. 이는 기본 스토리지에 대한 무단 액세스로부터 데이터의 보안을 유지하는 데 도움을 줍니다. Amazon Keyspaces 테이블의 모든 고객 데이터는 기본적으로 저장 시 암호화되며 서버 측 암호화는 투명하므로 애플리케이션을 변경할 필요가 없습니다.

저장 시 암호화는 테이블을 암호화하는 데 사용되는 암호화 키를 관리하기 위해 AWS Key Management Service (AWS KMS)와 통합됩니다. 새 테이블을 생성하거나 기존 테이블을 업데이트할 때 다음 *AWS KMS 키* 옵션 중 하나를 선택할 수 있습니다.
+ AWS 소유 키 - 기본 암호화 유형입니다. 키는 Amazon Keyspaces가 소유합니다(추가 비용 없음).
+ 고객 관리형 키 - 이 키는 사용자의 계정에 저장되며 사용자가 생성, 소유 및 관리합니다. 고객 관리형 키(AWS KMS 요금 부과)를 완전히 제어할 수 있습니다.

**AWS KMS 키(KMS 키)**  
저장 시 암호화는 AWS KMS 키로 모든 Amazon Keyspaces 데이터를 보호합니다. 기본적으로 Amazon Keyspaces는 Amazon Keyspaces 서비스 계정에서 생성 및 관리되는 다중 테넌트 암호화 키인 [AWS 소유 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)를 사용합니다.  
하지만 AWS 계정에서 [고객 관리형 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)를 사용하여 Amazon Keyspaces 테이블을 암호화할 수 있습니다. 키스페이스의 각 테이블마다 다른 KMS 키를 선택할 수 있습니다. 테이블에 대해 선택한 KMS 키는 모든 메타데이터 및 복원 가능한 백업을 암호화하는 데에도 사용됩니다.  
테이블을 생성 또는 업데이트할 때 테이블에 대해 KMS 키를 선택합니다. 언제든지 Amazon Keyspaces 콘솔에서 또는 [ALTER TABLE](cql.ddl.keyspace.md#cql.ddl.keyspace.alter) 문을 사용하여 테이블에 대한 KMS 키를 변경할 수 있습니다. KMS 키 전환 프로세스는 원활하며 가동 중지 시간 또는 서비스 저하가 발생하지 않습니다.

**키 계층 구조**  
Amazon Keyspaces는 키 계층 구조를 사용하여 데이터를 암호화합니다. 이 키 계층 구조에서 KMS 키는 루트 키입니다. Amazon Keyspaces 테이블 암호화 키를 암호화 및 해독하는 데 사용됩니다. 테이블 암호화 키는 Amazon Keyspaces가 읽기 및 쓰기 작업을 수행할 때 데이터를 암호화하고 해독하기 위해 내부적으로 사용하는 암호화 키를 암호화하는 데 사용됩니다.  
암호화 키 계층 구조를 사용하면 데이터를 다시 암호화하거나 애플리케이션 및 진행 중인 데이터 작업에 영향을 주지 않고도 KMS 키를 변경할 수 있습니다.  

![\[루트 키, 테이블 암호화 키, 저장 시 암호화에 사용되는 데이터 암호화 키를 보여 주는 키 계층 구조\]](http://docs.aws.amazon.com/ko_kr/keyspaces/latest/devguide/images/keyspaces_encryption.png)


**테이블 키**  
Amazon Keyspaces 테이블 키는 키 암호화 키로 사용됩니다. Amazon Keyspaces는 테이블 키를 사용하여 테이블, 로그 파일 및 복원 가능한 백업에 저장된 데이터를 암호화하는 데 사용되는 내부 데이터 암호화 키를 보호합니다. Amazon Keyspaces는 테이블에 있는 각 기본 구조의 고유한 데이터 암호화 키를 생성합니다. 하지만 여러 테이블 행이 동일한 데이터 암호화 키로 보호될 수 있습니다.  
KMS 키를 고객 관리형 키로 처음 설정하면가 *데이터 키를* AWS KMS 생성합니다. AWS KMS 데이터 키는 Amazon Keyspaces의 테이블 키를 나타냅니다.  
암호화된 테이블에 액세스하면 Amazon Keyspaces는 AWS KMS 에 KMS 키를 사용하여 테이블 키를 복호화하라는 요청을 보냅니다. 그런 다음 일반 텍스트 테이블 키를 사용하여 Amazon Keyspaces 데이터 암호화 키를 해독하고, 일반 텍스트 데이터 암호화 키를 사용하여 테이블 데이터를 해독합니다.  
Amazon Keyspaces는 테이블 키와 데이터 암호화 키를 사용하고 외부에 저장합니다 AWS KMS. [고급 암호화 표준](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard)(AES) 암호화 및 256비트 암호화 키로 모든 키를 보호합니다. 그런 다음 필요에 따라 테이블 데이터를 해독할 때 사용할 수 있도록 암호화된 데이터로 암호화된 키를 저장합니다.

**테이블 키 캐싱**  
Amazon Keyspaces는 모든 Amazon Keyspaces 작업에 AWS KMS 대한 호출을 방지하기 위해 메모리의 각 연결에 대해 일반 텍스트 테이블 키를 캐싱합니다. Amazon Keyspaces는 5분 동안 활동이 없으면 캐시된 테이블 키에 대한 요청을 받으면 테이블 키를 해독 AWS KMS 하기 위해에 새 요청을 보냅니다. 이 호출은 테이블 키를 복호화하기 위한 마지막 요청 이후 AWS KMS 또는 AWS Identity and Access Management (IAM)에서 KMS 키의 액세스 정책에 대한 모든 변경 사항을 캡처합니다.

**봉투 암호화**  
테이블의 고객 관리형 키를 변경하면 Amazon Keyspaces가 새 테이블 키를 생성합니다. 그런 다음 새 테이블 키를 사용하여 데이터 암호화 키를 다시 암호화합니다. 또한 새 테이블 키를 사용하여 복원 가능한 백업을 보호하는 데 사용되는 이전 테이블 키를 암호화합니다. 이 프로세스를 봉투 암호화라고 합니다. 이렇게 하면 고객 관리형 키를 교체해도 복원 가능한 백업에 액세스할 수 있습니다. 봉투 암호화에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*에서 [봉투 암호화](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#enveloping)를 참조하세요.

**Topics**
+ [AWS 소유 키](#keyspaces-owned)
+ [고객 관리형 키](#customer-managed)
+ [저장 시 암호화 사용 노트](#encryption.usagenotes)

## AWS 소유 키
<a name="keyspaces-owned"></a>

AWS 소유 키 는에 저장되지 않습니다 AWS 계정. 이 키는가 여러에서 사용하기 위해 AWS 소유하고 관리하는 KMS 키 모음의 일부입니다 AWS 계정. AWS 서비스는 AWS 소유 키 를 사용하여 데이터를 보호할 수 있습니다.

사용을 확인, 관리 또는 사용하거나 AWS 소유 키감사할 수 없습니다. 하지만 사용자는 데이터를 암호화하는 키를 보호하기 위해 어떤 작업을 수행하거나 어떤 프로그램을 변경할 필요가 없습니다.

사용에 대한 월별 요금 또는 사용 요금이 부과되지 AWS 소유 키않으며 계정의 AWS KMS 할당량에 포함되지 않습니다.

## 고객 관리형 키
<a name="customer-managed"></a>

고객 관리형 키는 사용자가 생성, 소유 및 관리하는의 키 AWS 계정 입니다. 이러한 KMS 키를 완전히 제어할 수 있습니다.

고객 관리형 키를 사용하여 다음과 같은 기능을 얻을 수 있습니다.
+ 고객 관리형 키에 대한 액세스를 제어하기 위한 [키 정책](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html), [IAM 정책](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html) 및 [권한 부여](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)의 설정 및 유지 관리를 포함하여 고객 관리형 키를 생성하고 관리합니다. 고객 관리형 키를 [활성화 및 비활성화](https://docs.aws.amazon.com/kms/latest/developerguide/enabling-keys.html)하고, [자동 키 교체](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html)를 활성화 및 비활성화하고, 고객 관리형 키가 더 이상 사용되지 않을 때 [고객 관리형 키를 삭제](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html)하도록 예약할 수 있습니다. 관리하는 고객 관리형 키의 태그와 별칭을 생성할 수 있습니다.
+ [가져온 키 구성 요소](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html)가 있는 고객 관리형 키를 사용하거나 고객이 소유하고 관리하는 [사용자 지정 키 스토어](https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html)에서 고객 관리형 키를 사용할 수 있습니다.
+  AWS CloudTrail 및 Amazon CloudWatch Logs를 사용하여 Amazon Keyspaces가 사용자를 대신하여 보내는 요청을 추적할 수 AWS KMS 있습니다. 자세한 내용은 [6단계:를 사용하여 모니터링 구성 AWS CloudTrail](encryption.customermanaged.md#encryption-cmk-trail) 단원을 참조하십시오.

고객 관리형 키[는 각 API 호출에 대해 요금이 부과](https://aws.amazon.com/kms/pricing/)되며 할당 AWS KMS 량은 이러한 KMS 키에 적용됩니다. 자세한 내용은 [AWS KMS 리소스 또는 요청 할당량](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html)을 참조하세요.

고객 관리형 키를 테이블에 대한 루트 암호화 키로 지정하면 복원 가능한 백업은 백업이 생성될 때 테이블에 지정된 것과 동일한 암호화 키로 암호화됩니다. 테이블의 KMS 키를 교체하면 키 엔벨로핑을 통해 최신 KMS 키가 복원 가능한 모든 백업에 액세스할 수 있습니다.

Amazon Keyspaces는 테이블 데이터에 대한 액세스를 제공하려면 고객 관리형 키에 액세스할 수 있어야 합니다. 암호화 키 상태가 비활성화됨으로 설정되거나 삭제가 예정된 경우 Amazon Keyspaces는 데이터를 암호화하거나 해독할 수 없습니다. 따라서 테이블에서 읽기 및 쓰기 작업을 수행할 수 없습니다. 서비스에서 사용자의 암호화 키가 접근 불가 상태인 것을 탐지하면 바로 Amazon Keyspaces는 사용자에게 이를 알리기 위해 이메일 알림을 보냅니다.

7일 이내에 암호화 키에 대한 액세스를 복원해야 합니다. 그렇지 않으면 Amazon Keyspaces가 테이블을 자동으로 삭제합니다. 예방 차원에서 Amazon Keyspaces는 테이블을 삭제하기 전에 테이블 데이터의 복원 가능한 백업을 생성합니다. Amazon Keyspaces는 복원 가능한 백업을 35일 동안 유지합니다. 35일이 지나면 더 이상 테이블 데이터를 복원할 수 없습니다. 복원 가능한 백업에 대해서는 요금이 청구되지 않지만 표준 [복원 요금이 적용됩니다](https://aws.amazon.com/keyspaces/pricing).

이 복원 가능한 백업을 새로운 테이블에 데이터를 복원할 때 사용할 수 있습니다. 복원을 시작하려면 테이블에 대한 최종 고객 관리형 키가 활성화되어야 하며 Amazon Keyspaces는 이에 액세스할 수 있어야 합니다.

**참고**  
액세스할 수 없거나 생성 프로세스가 완료되기 전에 삭제되도록 예약된 고객 관리형 키를 사용하여 암호화된 테이블을 생성할 때 오류가 발생합니다. 테이블 생성 작업이 실패하고 이메일 알림이 전송됩니다.

## 저장 시 암호화 사용 노트
<a name="encryption.usagenotes"></a>

Amazon Keyspaces에서 저장 시 암호화를 사용할 때 다음을 고려하세요.
+ 서버 측 저장 시 암호화는 모든 Amazon Keyspaces 테이블에서 활성화되며 비활성화할 수 없습니다. 전체 테이블은 저장 시 암호화되므로 암호화할 특정 열이나 행을 선택할 수 없습니다.
+ 기본적으로 Amazon Keyspaces는 단일 서비스 기본 키(AWS 소유 키)를 사용하여 모든 테이블을 암호화합니다. 이 키가 없는 경우 자동으로 생성됩니다. 서비스 기본 키는 비활성화할 수 없습니다.
+ 저장 시 암호화는 영구 스토리지 미디어에서 정적(유휴) 상태인 데이터만 암호화합니다. 전송 중인 데이터 또는 사용 중인 데이터에 대한 데이터 보안 문제가 있는 경우 추가 조치를 취해야 합니다.
  + 전송 중 데이터: Amazon Keyspaces의 모든 데이터는 전송 중에 암호화됩니다. 기본적으로 Amazon Keyspaces와 수신 통신은 Secure Sockets Layer(SSL) 및 전송 계층 보안(TLS) 암호화를 사용하여 보호됩니다.
  + 사용 중인 데이터: Amazon Keyspaces에 보내기 전에 클라이언트측 암호화를 사용하여 데이터를 보호합니다.
  + 고객 관리형 키: 테이블의 저장 데이터는 고객 관리형 키를 사용하여 항상 암호화됩니다. 그러나 여러 행의 원자성 업데이트를 수행하는 작업은 처리 AWS 소유 키 중에를 사용하여 데이터를 일시적으로 암호화합니다. 여기에는 범위 삭제 작업과 정적 및 비정적 데이터에 동시에 액세스하는 작업이 포함됩니다.
+ 단일 고객 관리형 키에 최대 50,000건의 [권한 부여](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)를 받을 수 있습니다. 고객 관리형 키와 관련된 모든 Amazon Keyspaces 테이블은 2개의 권한 부여를 소비합니다. 테이블이 삭제되면 하나의 권한 부여가 릴리스됩니다. 두 번째 권한 부여는 Amazon Keyspaces에서 실수로 고객 관리형 키에 대한 액세스 권한을 잃은 경우 데이터 손실을 방지하기 위해 테이블의 자동 스냅샷을 생성하는 데 사용됩니다. 이 권한 부여는 테이블 삭제 후 42일 후에 릴리스됩니다.

# 저장 시 암호화: 고객 관리형 키를 사용하여 Amazon Keyspaces에서 테이블을 암호화하는 방법
<a name="encryption.customermanaged"></a>

콘솔 또는 CQL 문을 사용하여 새 테이블에 AWS KMS key 대해를 지정하고 Amazon Keyspaces에서 기존 테이블의 암호화 키를 업데이트할 수 있습니다. 다음 주제에서는 새 테이블과 기존 테이블에 대한 고객 관리형 키를 구현하는 방법을 간략하게 설명합니다.

**Topics**
+ [사전 조건:를 사용하여 고객 관리형 키 생성 AWS KMS 및 Amazon Keyspaces에 권한 부여](#encryption.createCMKMS)
+ [3단계: 새 테이블에 대한 고객 관리형 키 지정](#encryption.tutorial-creating)
+ [4단계: 기존 테이블의 암호화 키 업데이트](#encryption.tutorial-update)
+ [5단계: 로그에서 Amazon Keyspaces 암호화 컨텍스트 사용](#encryption-context)
+ [6단계:를 사용하여 모니터링 구성 AWS CloudTrail](#encryption-cmk-trail)

## 사전 조건:를 사용하여 고객 관리형 키 생성 AWS KMS 및 Amazon Keyspaces에 권한 부여
<a name="encryption.createCMKMS"></a>

[고객 관리형 키](encryption.howitworks.md#customer-managed)로 Amazon Keyspaces 테이블을 보호하려면 먼저 AWS Key Management Service (AWS KMS)에서 키를 생성한 다음 Amazon Keyspaces에 해당 키를 사용하도록 권한을 부여해야 합니다.

### 1단계:를 사용하여 고객 관리형 키 생성 AWS KMS
<a name="encryption-create-key"></a>

Amazon Keyspaces 테이블을 보호하는 데 사용할 고객 관리형 키를 생성하려면 콘솔 또는 AWS API를 사용하여 [대칭 암호화 KMS 키 생성](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)의 단계를 따릅니다.

### 2단계: 고객 관리형 키 사용 승인
<a name="encryption-authz"></a>

Amazon Keyspaces 테이블을 보호할 [고객 관리형 키](encryption.howitworks.md#customer-managed)를 선택하려면 먼저 해당 고객 관리형 키의 정책이 Amazon Keyspaces에 사용자를 대신하여 키를 사용할 수 있는 권한을 부여해야 합니다. 고객은 고객 관리형 키에 대한 정책 및 권한 부여를 완벽하게 제어할 수 있습니다. [키 정책](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html), [IAM 정책](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html) 또는 [권한 부여](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)에 이러한 권한을 제공할 수 있습니다.

Amazon Keyspaces는 기본 [AWS 소유 키](encryption.howitworks.md#keyspaces-owned)를 사용하여 AWS 계정의 Amazon Keyspaces 테이블을 보호하기 위해 추가 승인이 필요하지 않습니다.

다음 주제에서는 Amazon Keyspaces 테이블에서 고객 관리형 키를 사용할 수 있도록 허용하는 IAM 정책 및 권한 부여를 사용하여 필요한 권한을 구성하는 방법을 보여 줍니다.

**Topics**
+ [고객 관리형 키에 대한 키 정책](#encryption-customer-managed-policy)
+ [예제 키 정책](#encryption-customer-managed-policy-sample)
+ [권한 부여를 사용하여 Amazon Keyspaces 승인](#encryption-grants)

#### 고객 관리형 키에 대한 키 정책
<a name="encryption-customer-managed-policy"></a>

Amazon Keyspaces 테이블을 보호하기 위해 [고객 관리형 키](encryption.howitworks.md#customer-managed)를 선택하면 Amazon Keyspaces는 선택하는 보안 주체를 대신하여 고객 관리형 키를 사용할 수 있는 권한을 얻습니다. 해당 보안 주체, 즉 사용자 또는 역할은 Amazon Keyspaces가 필요한 고객 관리형 키에 대한 권한이 있어야 합니다.

Amazon Keyspaces는 고객 관리형 키에 대해 최소한 다음 권한이 있어야 합니다.
+ [kms:Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html)
+ [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)
+ [kms:ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html)\$1(kms:ReEncryptFrom and kms:ReEncryptTo용)
+ kms:GenerateDataKey\$1([kms:GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) 및 [kms:GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)용)
+ [kms:DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)
+ [kms:CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)

#### 예제 키 정책
<a name="encryption-customer-managed-policy-sample"></a>

예를 들어 다음 예제 키 정책은 필수 권한만 제공합니다. 이 정책에는 다음과 같은 효과가 있습니다.
+ Amazon Keyspaces가 암호화 작업에 고객 관리형 키를 사용하고 권한 부여를 생성하도록 허용합니다. 단, Amazon Keyspaces를 사용할 권한이 있는 계정의 보안 주체를 대신해 동작하는 경우에 한합니다. 정책 문에 지정된 보안 주체가 Amazon Keyspaces를 사용할 권한이 없는 경우 Amazon Keyspaces 서비스에서 오는 경우에도 호출이 실패합니다.
+ [kms:ViaService](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-via-service) 조건 키는 정책 문에 나열된 보안 주체를 대신하여 Amazon Keyspaces로부터 요청이 오는 경우에만 사용 권한을 허용합니다. 이러한 보안 주체는 이러한 작업을 직접 호출 할 수 없습니다. 참고: `kms:ViaService` 값(`cassandra.*.amazonaws.com`)은 리전 위치에 별표(\$1)가 있습니다. Amazon Keyspaces에는 특정 항목과 무관한 권한이 필요합니다 AWS 리전.
+ 고객 관리형 키 관리자(`db-team` 역할을 수임할 수 있는 사용자)에게 고객 관리형 키에 대한 읽기 전용 액세스와 테이블을 보호하기 위해 [Amazon Keyspaces가 필요로 하는](#encryption-grants) 권한 부여를 포함하여 권한 부여를 취소할 수 있는 권한을 제공합니다.
+ Amazon Keyspaces는 고객 관리형 키에 대한 읽기 전용 액세스 권한을 부여합니다. 이 경우 Amazon Keyspaces는 이러한 작업을 직접 호출할 수 있습니다. 계정 보안 주체를 대신하여 동작할 필요는 없습니다.

예제 키 정책을 사용하기 전에 예제 보안 주체를의 실제 보안 주체로 바꿉니다 AWS 계정.

```
{
  "Id": "key-policy-cassandra",
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid" : "Allow access through Amazon Keyspaces for all principals in the account that are authorized to use Amazon Keyspaces",
      "Effect": "Allow",
      "Principal": {"AWS": "arn:aws:iam::111122223333:user/db-lead"},
      "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:DescribeKey",
        "kms:CreateGrant"
      ],
      "Resource": "*",      
      "Condition": { 
         "StringLike": {
           "kms:ViaService" : "cassandra.*.amazonaws.com"
         }
      }
    },
    {
      "Sid":  "Allow administrators to view the customer managed key and revoke grants",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/db-team"
       },
      "Action": [
        "kms:Describe*",
        "kms:Get*",
        "kms:List*",
        "kms:RevokeGrant"
      ],
      "Resource": "*"
    }
  ]
}
```

#### 권한 부여를 사용하여 Amazon Keyspaces 승인
<a name="encryption-grants"></a>

키 정책 이외에 Amazon Keyspaces는 권한 부여를 사용하여 고객 관리형 키에 대한 권한을 설정합니다. 계정에서 고객 관리형 키에 대한 권한 부여를 보려면 [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html) 작업을 사용합니다. Amazon Keyspaces는 [AWS 소유 키](encryption.howitworks.md#keyspaces-owned)를 사용하여 테이블을 보호하는 데 권한 부여 또는 추가 권한이 필요하지 않습니다.

Amazon Keyspaces는 배경 시스템 유지 관리 및 연속 데이터 보호 태스크를 수행할 때 권한 부여 권한을 사용합니다. 권한 부여를 사용하여 테이블 키도 생성합니다.

각 권한 부여는 테이블마다 다릅니다. 계정에 동일한 고객 관리형 키로 암호화되는 여러 테이블이 있는 경우 각 테이블 유형별 권한 부여가 있습니다. 권한 부여는 테이블 이름과 AWS 계정 ID를 포함하는 [Amazon Keyspaces 암호화 컨텍스트](https://docs.aws.amazon.com/kms/latest/developerguide/encryption-context.html)에 의해 제한됩니다. 권한 부여에는 더 이상 필요하지 않은 경우 [권한 부여를 사용 중지](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)할 수 있는 권한이 포함됩니다.

권한 부여를 생성하려면 Amazon Keyspaces가 암호화된 테이블을 생성한 사용자를 대신하여 `CreateGrant`를 호출할 수 있는 권한이 있어야 합니다.

이 키 정책은 계정이 고객 관리형 키에 대한 [권한 부여를 취소](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)하도록 허용할 수도 있습니다. 단, 활성 암호화 테이블에서 권한 부여를 취소할 경우에는 Amazon Keyspaces가 테이블을 보호하고 유지하지 못합니다.

## 3단계: 새 테이블에 대한 고객 관리형 키 지정
<a name="encryption.tutorial-creating"></a>

Amazon Keyspaces 콘솔 또는 CQL을 사용하여 새로운 테이블에 고객 관리형 키를 지정하기 위해 다음 단계를 따르세요.

### 고객 관리형 키(콘솔)를 사용하여 암호화된 테이블 생성
<a name="encryption.tutorial-console"></a>

1. 에 로그인 AWS Management Console하고 [https://console.aws.amazon.com/keyspaces/home](https://console.aws.amazon.com/keyspaces/home) Amazon Keyspaces 콘솔을 엽니다.

1. 탐색 창에서 **테이블**을 선택한 다음 **테이블 생성**을 선택합니다.

1. **테이블 세부 정보** 섹션의 **테이블 생성** 페이지에서 키스페이스를 선택하고 새 테이블의 이름을 입력합니다.

1. **스키마** 섹션에서 테이블의 스키마를 생성합니다.

1. **테이블 설정** 섹션에서 **설정 사용자 지정**을 선택합니다.

1. **암호화 설정**으로 계속 진행합니다.

   이 단계에서는 테이블의 암호화 설정을 선택합니다.

   **저장 시 암호화** 섹션의 **선택 AWS KMS key**에서 **다른 KMS 키(고급) 선택** 옵션을 선택하고 검색 필드에서를 선택하거나 Amazon 리소스 이름(ARN)을 AWS KMS key 입력합니다.
**참고**  
선택한 키에 액세스할 수 없거나 필요한 권한이 없는 경우 AWS Key Management Service 개발자 안내서의 [키 액세스 문제 해결을 참조하세요](https://docs.aws.amazon.com/kms/latest/developerguide/policy-evaluation.html).

1. **생성**을 선택하여 암호화된 테이블을 생성합니다.

### 저장 시 암호화(CQL)에 대한 고객 관리형 키를 사용하여 새 테이블 생성
<a name="encryption.tutorial-cql"></a>

저장 시 암호화에 고객 관리형 키를 사용하는 새 테이블을 생성하려면 다음 예제와 같이 `CREATE TABLE` 문을 사용할 수 있습니다. Amazon Keyspaces에 권한이 부여된 유효한 키에 대해 키 ARN을 ARN으로 교체해야 합니다.

```
CREATE TABLE my_keyspace.my_table(id bigint, name text, place text STATIC, PRIMARY KEY(id, name)) WITH CUSTOM_PROPERTIES = {
        'encryption_specification':{
                'encryption_type': 'CUSTOMER_MANAGED_KMS_KEY', 
                'kms_key_identifier':'arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111'
            }
    };
```

`Invalid Request Exception`을 수신한 경우 고객 관리형 키가 유효하고 Amazon Keyspaces에 필요한 권한이 있는지 확인해야 합니다. 키가 올바르게 구성되었는지 확인하려면 AWS Key Management Service 개발자 안내서의 [키 액세스 문제 해결을 참조하세요](https://docs.aws.amazon.com/kms/latest/developerguide/policy-evaluation.html).

## 4단계: 기존 테이블의 암호화 키 업데이트
<a name="encryption.tutorial-update"></a>

Amazon Keyspaces 콘솔 또는 CQL을 사용하여 언제든지 AWS 소유 키 와 고객 관리형 KMS 키 간에 기존 테이블의 암호화 키를 변경할 수도 있습니다.

### 새 고객 관리형 키로 기존 테이블 업데이트(콘솔)
<a name="encryption.tutorial-update-console"></a>

1. 에 로그인 AWS Management Console하고 [https://console.aws.amazon.com/keyspaces/home](https://console.aws.amazon.com/keyspaces/home) Amazon Keyspaces 콘솔을 엽니다.

1.  탐색 창에서 **테이블**을 선택합니다.

1. 업데이트할 테이블을 선택한 다음 **추가 설정** 탭을 선택합니다.

1. **저장 시 암호화** 섹션에서 **암호화 관리**를 선택하여 테이블의 암호화 설정을 편집합니다.

   **선택 AWS KMS key**에서 **다른 KMS 키 선택(고급)** 옵션을 선택하고 검색 필드에서를 선택하거나 Amazon 리소스 이름(ARN)을 AWS KMS key 입력합니다.
**참고**  
선택한 키가 유효하지 않은 경우 AWS Key Management Service 개발자 안내서의 [키 액세스 문제 해결을 참조하세요](https://docs.aws.amazon.com/kms/latest/developerguide/policy-evaluation.html).

   또는 고객 관리형 키로 암호화된 테이블 AWS 소유 키 의를 선택할 수 있습니다.

1. **변경 사항 저장**을 선택하여 테이블 변경 사항을 저장합니다.

### 기존 테이블에 사용된 암호화 키 업데이트
<a name="encryption.tutorial-update-cql"></a>

기존 테이블의 암호화 키를 변경하려면 `ALTER TABLE` 문을 사용하여 저장 시 암호화에 대한 고객 관리형 키를 지정합니다. Amazon Keyspaces에 권한이 부여된 유효한 키에 대해 키 ARN을 ARN으로 교체해야 합니다.

```
ALTER TABLE my_keyspace.my_table WITH CUSTOM_PROPERTIES = {     
              'encryption_specification':{ 
                      'encryption_type': 'CUSTOMER_MANAGED_KMS_KEY', 
                      'kms_key_identifier':'arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111'     
                  } 
         };
```

`Invalid Request Exception`을 수신한 경우 고객 관리형 키가 유효하고 Amazon Keyspaces에 필요한 권한이 있는지 확인해야 합니다. 키가 올바르게 구성되었는지 확인하려면 AWS Key Management Service 개발자 안내서의 [키 액세스 문제 해결을 참조하세요](https://docs.aws.amazon.com/kms/latest/developerguide/policy-evaluation.html).

를 사용하여 암호화 키를 기본 저장 시 암호화 옵션으로 다시 변경하려면 다음 예제와 같이 `ALTER TABLE` 문을 사용할 AWS 소유 키수 있습니다.

```
ALTER TABLE my_keyspace.my_table WITH CUSTOM_PROPERTIES = {
                'encryption_specification':{
                      'encryption_type' : 'AWS_OWNED_KMS_KEY' 
                    } 
         };
```

## 5단계: 로그에서 Amazon Keyspaces 암호화 컨텍스트 사용
<a name="encryption-context"></a>

[암호화 컨텍스트](https://docs.aws.amazon.com/kms/latest/developerguide/encrypt_context.html)는 보안되지 않은 임의의 데이터를 포함하는 키-값 페어 세트입니다. 데이터 암호화 요청에 암호화 컨텍스트를 포함하면 암호화 컨텍스트가 암호화된 데이터에 AWS KMS 암호화 방식으로 바인딩됩니다. 따라서 동일한 암호화 컨텍스트로 전달해야 이 데이터를 해독할 수 있습니다.

Amazon Keyspaces는 모든 암호화 작업에서 동일한 AWS KMS 암호화 컨텍스트를 사용합니다. [고객 관리형 키](encryption.howitworks.md#customer-managed)를 사용하여 Amazon Keyspaces 테이블을 보호할 경우 암호화 컨텍스트를 사용하여 감사 레코드 및 로그에서 고객 관리형 키의 사용을 식별할 수 있습니다. [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)의 로그 및 [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html)와 같은 로그에서 일반 텍스트에 나타나기도 합니다.

 AWS KMS Amazon Keyspaces는에 대한 요청에서 세 개의 키-값 페어가 있는 암호화 컨텍스트를 사용합니다.

```
"encryptionContextSubset": {
    "aws:cassandra:keyspaceName": "my_keyspace",
    "aws:cassandra:tableName": "mytable"
    "aws:cassandra:subscriberId": "111122223333"
}
```
+ **키스페이스** – 첫 번째 키-값 쌍은 Amazon Keyspaces가 암호화 중인 테이블을 포함하는 키스페이스를 식별합니다. 키는 `aws:cassandra:keyspaceName`입니다. 값은 키스페이스의 이름입니다.

  ```
  "aws:cassandra:keyspaceName": "<keyspace-name>"
  ```

  예제:

  ```
  "aws:cassandra:keyspaceName": "my_keyspace"
  ```
+ **테이블** – 두 번째 키-값 쌍은 Amazon Keyspaces가 암호화 중인 테이블을 식별합니다. 키는 `aws:cassandra:tableName`입니다. 값은 테이블의 이름입니다.

  ```
  "aws:cassandra:tableName": "<table-name>"
  ```

  예제:

  ```
  "aws:cassandra:tableName": "my_table"
  ```
+ **계정** – 세 번째 키-값 쌍은 AWS 계정를 식별합니다. 키는 `aws:cassandra:subscriberId`입니다. 값은 계정 ID입니다.

  ```
  "aws:cassandra:subscriberId": "<account-id>"
  ```

  예제:

  ```
  "aws:cassandra:subscriberId": "111122223333"
  ```

## 6단계:를 사용하여 모니터링 구성 AWS CloudTrail
<a name="encryption-cmk-trail"></a>

[고객 관리형 키를](encryption.howitworks.md#customer-managed) 사용하여 Amazon Keyspaces 테이블을 보호하는 경우 AWS CloudTrail 로그를 사용하여 Amazon Keyspaces가 사용자를 대신하여에 보내는 요청을 추적할 수 AWS KMS 있습니다.

`GenerateDataKey`, `DescribeKey`, `Decrypt` 및 `CreateGrant` 요청은 이 섹션에서 다룹니다. 또한 Amazon Keyspaces는 [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html) 작업을 사용하여 사용자가 테이블을 삭제할 때 권한 부여를 제거합니다.

**참고**  
Amazon Keyspaces로 작업할 때 일부 작업은 `invokedBy` 필드가 인 CloudTrail 이벤트를 생성할 수 있습니다`dynamodb.amazonaws.com`. 이는 Amazon Keyspaces가 Amazon DynamoDB와 통합되어 서비스를 제공하기 때문에 예상되고 발생합니다.

**GenerateDataKey**  
Amazon Keyspaces는 고유한 테이블 키를 생성하여 저장 데이터를 암호화합니다. 테이블에 대한 KMS 키를 AWS KMS 지정하는 *[GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)* 요청을에 보냅니다.  
`GenerateDataKey` 작업을 기록하는 이벤트는 다음 예시 이벤트와 유사합니다. 사용자는 Amazon Keyspaces 서비스 계정입니다. 파라미터에는 고객 관리형 키의 Amazon 리소스 이름(ARN), 256비트 키가 필요한 키 지정자, 키스페이스, 테이블 및 AWS 계정를 식별하는 [암호화 컨텍스트](#encryption-context)가 포함됩니다.  

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AWSService",
        "invokedBy": "AWS Internal"
    },
    "eventTime": "2021-04-16T04:56:05Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "GenerateDataKey",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "AWS Internal",
    "userAgent": "AWS Internal",
    "requestParameters": {
        "keySpec": "AES_256",
        "encryptionContext": {
            "aws:cassandra:keyspaceName": "my_keyspace",
            "aws:cassandra:tableName": "my_table",
            "aws:cassandra:subscriberId": "123SAMPLE012"
        },
        "keyId": "arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111"
    },
    "responseElements": null,
    "requestID": "5e8e9cb5-9194-4334-aacc-9dd7d50fe246",
    "eventID": "49fccab9-2448-4b97-a89d-7d5c39318d6f",
    "readOnly": true,
    "resources": [
        {
            "accountId": "123SAMPLE012",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "eventCategory": "Management",
    "recipientAccountId": "123SAMPLE012",
    "sharedEventID": "84fbaaf0-9641-4e32-9147-57d2cb08792e"
}
```

**DescribeKey**  
Amazon Keyspaces는 [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) 작업을 사용하여 사용자가 선택한 KMS 키가 계정과 리전에 있는지 확인합니다.  
`DescribeKey` 작업을 기록하는 이벤트는 다음 예시 이벤트와 유사합니다. 사용자는 Amazon Keyspaces 서비스 계정입니다. 파라미터에는 고객 관리형 키의 ARN과 256비트 키가 필요한 키 지정자가 포함됩니다.  

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "AIDAZ3FNIIVIZZ6H7CFQG",
        "arn": "arn:aws:iam::123SAMPLE012:user/admin",
        "accountId": "123SAMPLE012",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "userName": "admin",
        "sessionContext": {
            "sessionIssuer": {},
            "webIdFederationData": {},
            "attributes": {
                "mfaAuthenticated": "false",
                "creationDate": "2021-04-16T04:55:42Z"
            }
        },
        "invokedBy": "AWS Internal"
    },
    "eventTime": "2021-04-16T04:55:58Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "DescribeKey",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "AWS Internal",
    "userAgent": "AWS Internal",
    "requestParameters": {
        "keyId": "arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111"
    },
    "responseElements": null,
    "requestID": "c25a8105-050b-4f52-8358-6e872fb03a6c",
    "eventID": "0d96420e-707e-41b9-9118-56585a669658",
    "readOnly": true,
    "resources": [
        {
            "accountId": "123SAMPLE012",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "eventCategory": "Management",
    "recipientAccountId": "123SAMPLE012"
}
```

**Decrypt**  
Amazon Keyspaces 테이블에 액세스하면 Amazon Keyspaces가 테이블 키를 해독해야만 계층에서 그 아래에 있는 키를 해독할 수 있습니다. 이후 테이블에 있는 데이터를 해독합니다. 테이블 키를 복호화하기 위해 Amazon Keyspaces는 테이블의 KMS 키를 AWS KMS 지정하는에 [복호화](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 요청을 보냅니다.  
`Decrypt` 작업을 기록하는 이벤트는 다음 예시 이벤트와 유사합니다. 사용자는 테이블에 액세스하는의 보안 주체 AWS 계정 입니다. 파라미터에는 암호화된 테이블 키(암호 텍스트 BLOB)와 테이블과를 식별하는 [암호화 컨텍스트](#encryption-context)가 포함됩니다 AWS 계정.는 사이퍼텍스트에서 고객 관리형 키의 ID를 AWS KMS 도출합니다.  

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AWSService",
        "invokedBy": "AWS Internal"
    },
    "eventTime": "2021-04-16T05:29:44Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Decrypt",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "AWS Internal",
    "userAgent": "AWS Internal",
    "requestParameters": {
        "encryptionContext": {
            "aws:cassandra:keyspaceName": "my_keyspace",
            "aws:cassandra:tableName": "my_table",
            "aws:cassandra:subscriberId": "123SAMPLE012"
        },
        "encryptionAlgorithm": "SYMMETRIC_DEFAULT"
    },
    "responseElements": null,
    "requestID": "50e80373-83c9-4034-8226-5439e1c9b259",
    "eventID": "8db9788f-04a5-4ae2-90c9-15c79c411b6b",
    "readOnly": true,
    "resources": [
        {
            "accountId": "123SAMPLE012",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "eventCategory": "Management",
    "recipientAccountId": "123SAMPLE012",
    "sharedEventID": "7ed99e2d-910a-4708-a4e3-0180d8dbb68e"
}
```

**CreateGrant**  
[고객 관리형 키](encryption.howitworks.md#customer-managed)를 사용하여 Amazon Keyspaces 테이블을 보호하면 Amazon Keyspaces는 [권한 부여](#encryption-grants)를 사용하여 서비스가 지속적 데이터 보호와 유지 관리 및 내구성 태스크를 수행하도록 허용합니다. 이러한 권한 부여가 [AWS 소유 키](encryption.howitworks.md#keyspaces-owned)에서는 필요하지 않습니다.  
Amazon Keyspaces가 생성하는 권한 부여는 테이블마다 다릅니다. [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) 요청에 있는 주체는 테이블을 생성한 사용자입니다.  
`CreateGrant` 작업을 기록하는 이벤트는 다음 예시 이벤트와 유사합니다. 파라미터에는 테이블에 대한 고객 관리형 키의 ARN, 피부여자 주체 및 삭제 보안 주체(Amazon Keyspaces 서비스), 권한 부여가 적용되는 작업이 포함됩니다. 모든 암호화 작업에서 지정된 [암호화 컨텍스트](#encryption-context)를 사용할 것을 요구하는 제한도 포함됩니다.  

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "AIDAZ3FNIIVIZZ6H7CFQG",
        "arn": "arn:aws:iam::arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111:user/admin",
        "accountId": "arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111",
        "accessKeyId": "AKIAI44QH8DHBEXAMPLE",
        "userName": "admin",
        "sessionContext": {
            "sessionIssuer": {},
            "webIdFederationData": {},
            "attributes": {
                "mfaAuthenticated": "false",
                "creationDate": "2021-04-16T04:55:42Z"
            }
        },
        "invokedBy": "AWS Internal"
    },
    "eventTime": "2021-04-16T05:11:10Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "CreateGrant",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "AWS Internal",
    "userAgent": "AWS Internal",
    "requestParameters": {
        "keyId": "a7d328af-215e-4661-9a69-88c858909f20",
        "operations": [
            "DescribeKey",
            "GenerateDataKey",
            "Decrypt",
            "Encrypt",
            "ReEncryptFrom",
            "ReEncryptTo",
            "RetireGrant"
        ],
        "constraints": {
            "encryptionContextSubset": {
                "aws:cassandra:keyspaceName": "my_keyspace",
                "aws:cassandra:tableName": "my_table",
                "aws:cassandra:subscriberId": "123SAMPLE012"
            }
        },
        "retiringPrincipal": "cassandratest.us-east-1.amazonaws.com",
        "granteePrincipal": "cassandratest.us-east-1.amazonaws.com"
    },
    "responseElements": {
        "grantId": "18e4235f1b07f289762a31a1886cb5efd225f069280d4f76cd83b9b9b5501013"
    },
    "requestID": "b379a767-1f9b-48c3-b731-fb23e865e7f7",
    "eventID": "29ee1fd4-28f2-416f-a419-551910d20291",
    "readOnly": false,
    "resources": [
        {
            "accountId": "123SAMPLE012",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:eu-west-1:5555555555555:key/11111111-1111-111-1111-111111111111"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "eventCategory": "Management",
    "recipientAccountId": "123SAMPLE012"
}
```

# Amazon Keyspaces에서 전송 중 암호화
<a name="encryption-in-transit"></a>

Amazon Keyspaces는 전송 계층 보안(TLS)을 사용한 보안 연결만 허용합니다. 전송 중 암호화는 Amazon Keyspaces와 주고 받는 데이터를 암호화하여 추가 데이터 보호 계층을 제공합니다. 조직의 정책, 업계나 정부 규범 및 규정 준수 요건에 따라 네트워크를 통해 데이터를 전송할 때 애플리케이션의 데이터 보안을 강화하기 위해 전송 중 암호화를 사용해야 하는 경우가 많습니다.

TLS를 사용하여 Amazon Keyspaces에 대한 `cqlsh` 연결을 암호화하는 방법을 알아보려면 [TLS에 대한 `cqlsh` 연결을 수동으로 구성하는 방법](programmatic.cqlsh.md#encrypt_using_tls) 섹션을 참조하세요. 클라이언트 드라이버에서 TLS 암호화를 사용하는 방법을 알아보려면 [Cassandra 클라이언트 드라이버를 사용하여 프로그래밍 방식으로 Amazon Keyspaces에 액세스](programmatic.drivers.md) 섹션을 참조하세요.

# Amazon Keyspaces의 인터네트워크 트래픽 개인 정보
<a name="inter-network-traffic-privacy"></a>

이 주제에서는 Amazon Keyspaces(Apache Cassandra용)가 온프레미스 애플리케이션에서 Amazon Keyspaces로의 연결과 Amazon Keyspaces 및 동일한 내의 다른 AWS 리소스 간의 연결을 보호하는 방법을 설명합니다 AWS 리전.

## 서비스와 온프레미스 클라이언트 및 애플리케이션 간의 트래픽
<a name="inter-network-traffic-privacy-on-prem"></a>

프라이빗 네트워크와 간에 AWS는 두 가지 연결 옵션이 있습니다.
+  AWS Site-to-Site VPN 연결. 자세한 내용은 * AWS Site-to-Site VPN사용 설명서*의 [AWS Site-to-Site VPN 이란?](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html)을 참조하세요.
+  Direct Connect 연결입니다. 자세한 내용은 * Direct Connect사용 설명서*의 [Direct Connect 이란?](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html)을 참조하세요.

관리형 서비스인 Amazon Keyspaces(Apache Cassandra용)는 AWS 글로벌 네트워크 보안으로 보호됩니다. AWS 보안 서비스 및가 인프라를 AWS 보호하는 방법에 대한 자세한 내용은 [AWS 클라우드 보안을](https://aws.amazon.com/security/) 참조하세요. 인프라 보안 모범 사례를 사용하여 환경을 설계하려면 *보안 원칙 AWS Well‐Architected Framework*의 [인프라 보호를](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html) 참조하세요 AWS .

 AWS 에서 게시한 API 호출을 사용하여 네트워크를 통해 Amazon Keyspaces에 액세스합니다. 클라이언트는 다음을 지원해야 합니다.
+ Transport Layer Security(TLS). TLS 1.2는 필수이며 TLS 1.3을 권장합니다.
+ DHE(Ephemeral Diffie-Hellman) 또는 ECDHE(Elliptic Curve Ephemeral Diffie-Hellman)와 같은 완전 전송 보안(PFS)이 포함된 암호 제품군. Java 7 이상의 최신 시스템은 대부분 이러한 모드를 지원합니다.

Amazon Keyspaces는 클라이언트 요청을 인증하는 두 가지 방법을 지원합니다. 첫 번째 방법은 특정 IAM 사용자에 대해 생성된 암호 기반 보안 인증인 서비스별 보안 인증을 사용합니다. IAM 콘솔 AWS CLI, 또는 AWS API를 사용하여 암호를 생성하고 관리할 수 있습니다. 자세한 내용은 [Amazon Keyspaces로 IAM 사용](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mcs.html)을 참조하세요.

두 번째 방법은 Cassandra용 오픈 소스 DataStax Java 드라이버에 대한 인증 플러그인을 사용하는 것입니다. 이 플러그인을 사용하면 [IAM 사용자, 역할 및 페더레이션 ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)가 [AWS 서명 버전 4 프로세스(SigV4)](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)를 사용하여 Amazon Keyspaces(Apache Cassandra용) API 요청에 인증 정보를 추가할 수 있습니다. 자세한 내용은 [Amazon Keyspaces에 대한 AWS 자격 증명 생성 및 구성](access.credentials.md) 단원을 참조하십시오.

## 동일한 리전의 AWS 리소스 간 트래픽
<a name="inter-network-traffic-privacy-within-region"></a>

인터페이스 VPC 엔드포인트를 사용하면 Amazon VPC에서 실행되는 Virtual Private Cloud(VPC)와 Amazon Keyspaces 간에 프라이빗 통신이 가능해집니다. 인터페이스 VPC 엔드포인트는 VPCs와 AWS 서비스 간의 프라이빗 통신을 활성화하는 AWS 서비스 AWS PrivateLink인 로 구동됩니다.는 네트워크 트래픽이 Amazon 네트워크를 벗어나지 않도록 VPC의 프라이빗 IPs와 함께 탄력적 네트워크 인터페이스를 사용하여 이를 AWS PrivateLink 활성화합니다. 인터페이스 VPC 엔드포인트에는 인터넷 게이트웨이, NAT 디바이스, VPN 연결 또는 Direct Connect 연결이 필요하지 않습니다. 자세한 내용은 [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/) 및 [인터페이스 VPC 엔드포인트(AWS PrivateLink)](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html)를 참조하세요. 예시 정책은 [Amazon Keyspaces에 인터페이스 VPC 엔드포인트 사용](vpc-endpoints.md#using-interface-vpc-endpoints) 섹션을 참조하세요.