기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
데이터 암호화
이 주제에서는 전송 중 암호화 및 저장 중 암호화에 대한 Amazon Connect 결정 관련 정보를 제공합니다.
전송 중 데이터 암호화
고객과 Amazon Connect Decisions 간의 모든 통신과 Amazon Connect Decisions와 다운스트림 종속성 간의 모든 통신은 TLS 1.2 이상의 연결을 사용하여 보호됩니다.
유휴 데이터 암호화
저장된 모든 데이터는 서버 측 암호화를 사용하여 암호화됩니다. 암호화는 서비스에서 투명하게 처리되므로 추가 구성이 필요하지 않습니다.
기본적으로 Amazon Connect Decisions는 AWS Key Management Service(AWS KMS)의 AWS 소유 암호화 키를 사용하여 데이터를 암호화합니다. 데이터를 암호화하는 AWS 소유 키를 보호하기 위해 어떤 조치도 취할 필요가 없습니다. 자세한 내용은 AWS Key Management Service 개발자 안내서의 AWS 소유 AWS Key Management Service 참조하세요.
생성, 교체, 비활성화 및 액세스 정책 관리를 포함하여 키 수명 주기를 완전히 제어하도록 고객 관리형 KMS 키를 선택적으로 구성할 수 있습니다.
고객 관리형 KMS 키를 사용하여 저장 데이터 암호화
Amazon Connect Decisions가 고객 관리형 KMS 키를 사용하는 방법
고객 관리형 KMS 키를 구성하면 Amazon Connect Decisions는 이를 사용하여 저장된 인스턴스의 모든 데이터를 암호화합니다. 여기에는 서비스의 기본 인프라에 저장된 데이터가 포함됩니다.
서비스는 세 가지 메커니즘을 통해 키에 액세스합니다.
-
서비스 보안 주체 -
scn.amazonaws.com서비스 보안 주체는 암호화 컨텍스트와 혼동된 대리자 헤더를 전달하여 암호화, 암호 해독 및 GenerateDataKey 작업을 위해 KMS를 직접 호출합니다. -
권한 부여 - 인스턴스를 생성할 때 서비스가 키에 대한 권한 부여를 생성합니다. 이러한 권한 부여를 통해 종속 AWS 서비스는 키를 사용하여 데이터를 암호화하고 해독할 수 있습니다. 인스턴스가 삭제되면 권한 부여가 사용 중지됩니다.
-
FAS를 통한 인스턴스 역할 - 콘솔과 상호 작용할 때 서비스 연결 역할이
scn.<region>.amazonaws.com.rproxy.goskope.comViaService 조건을 통해 키에 액세스합니다.
암호화 컨텍스트: 모든 직접 KMS 작업에는 다음 암호화 컨텍스트가 포함됩니다.
{"aws:scn:arn": "arn:aws:scn:<region>:<account-id>:instance/<instance-id>"}
데이터 키 캐싱: Amazon Connect Decisions는 최대 15분 동안 데이터 키를 캐싱합니다. 즉, KMS 키에 대한 액세스를 비활성화하거나 취소하면 작업이 실패하기 전에 서비스가 최대 15분 동안 캐시된 데이터 키를 계속 사용할 수 있습니다.
고객 관리형 KMS 키 구성
Amazon Connect Decisions는 대칭 암호화 KMS 키만 지원합니다. 다중 리전 키가 지원됩니다.
고객 관리형 KMS 키를 사용하도록 권한 구성
고객 관리형 KMS 키를 사용하려면 다음 세 단계에 따라 키 정책을 구성합니다.
-
아래 기본 정책을 사용하여 KMS 키를 생성합니다.
-
Amazon Connect Decisions 인스턴스를 생성하고 해당 키를 선택합니다.
-
(선택 사항, 권장 사항) 인스턴스 수준 제한으로 키 정책을 업데이트합니다.
1단계 - 기본 정책을 사용하여 키 생성
AWS KMS 콘솔<customer-account-id>를 AWS 계정 ID로 바꾸고를 AWS 리전<region>으로 바꿉니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccountRootFullAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<customer-account-id>:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "AllowScnRetrievalOfKeyMetadata", "Effect": "Allow", "Principal": { "Service": "scn.amazonaws.com" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "<customer-account-id>" } } }, { "Sid": "AllowScnEncryptDecryptWithContext", "Effect": "Allow", "Principal": { "Service": "scn.amazonaws.com" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "<customer-account-id>" } } }, { "Sid": "AllowScnCryptoViaDependencyServices", "Effect": "Allow", "Principal": { "Service": "scn.amazonaws.com" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "redshift-serverless.<region>.amazonaws.com", "aoss.<region>.amazonaws.com", "dynamodb.<region>.amazonaws.com", "s3.<region>.amazonaws.com" ] } } }, { "Sid": "AllowScnCreateGrantForDependencyServices", "Effect": "Allow", "Principal": { "Service": "scn.amazonaws.com" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Encrypt", "Decrypt", "GenerateDataKey", "GenerateDataKeyWithoutPlaintext", "DescribeKey", "RetireGrant", "ReEncryptFrom", "ReEncryptTo", "CreateGrant" ] }, "Bool": { "kms:GrantIsForAWSResource": "true" } } }, { "Sid": "AllowInstanceRoleDescribeKey", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "ArnLike": { "aws:PrincipalArn": "arn:aws:iam::<customer-account-id>:role/service-role/scn-instance-role-*" }, "StringEquals": { "kms:ViaService": "scn.<region>.amazonaws.com" } } }, { "Sid": "AllowInstanceRoleEncryptDecrypt", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "ArnLike": { "aws:PrincipalArn": "arn:aws:iam::<customer-account-id>:role/service-role/scn-instance-role-*" }, "StringEquals": { "kms:ViaService": "scn.<region>.amazonaws.com" } } }, { "Sid": "AllowInstanceRoleCreateGrant", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "ArnLike": { "aws:PrincipalArn": "arn:aws:iam::<customer-account-id>:role/service-role/scn-instance-role-*" }, "StringEquals": { "kms:ViaService": "scn.<region>.amazonaws.com" }, "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Encrypt", "Decrypt", "GenerateDataKey", "GenerateDataKeyWithoutPlaintext", "DescribeKey", "CreateGrant" ] }, "Bool": { "kms:GrantIsForAWSResource": "true" } } } ] }
정책 설명:
-
AllowAccountRootFullAccess - 키 소유자가 전체 제어를 유지하도록 합니다. 키 잠금을 방지하는 데 필요합니다.
-
AllowScnRetrievalOfKeyMetadata - 서비스가 인스턴스 생성 중에 키 구성을 검증할 수 있도록 허용합니다. 를 통해 계정으로 범위가 지정됩니다
aws:SourceAccount. -
AllowScnEncryptDecryptWithContext - 데이터에 대한 직접 암호화 작업을 허용합니다. 3단계 이후 암호화 컨텍스트를 통해 특정 인스턴스로 추가 범위가 지정됩니다.
-
AllowScnCryptoViaDependencyServices - 암호화 컨텍스트를 지원하지 않는 종속성 서비스를 통해 암호화 작업을 허용합니다. 를 통해 특정 서비스 엔드포인트
kms:ViaService로 범위가 지정됩니다. -
AllowScnCreateGrantForDependencyServices - 종속성 서비스에 대한 권한 부여 생성을 허용합니다. 나열된 작업으로 제한되고 AWS 리소스로만 제한됩니다.
-
AllowInstanceRoleDescribeKey - 인스턴스의 서비스 연결 역할이 FAS를 통해 키를 설명할 수 있도록 허용합니다.
-
AllowInstanceRoleEncryptDecrypt - 인스턴스 역할이 FAS를 통해 데이터 키를 복호화하고 생성할 수 있도록 허용합니다.
-
AllowInstanceRoleCreateGrant - 인스턴스 역할이 다운스트림 통합에 대한 권한 부여를 생성할 수 있도록 허용합니다.
2단계 - Amazon Connect Decisions 인스턴스 생성
인스턴스 생성 중에 암호화 설정에서 고객 관리형 키를 선택하고 1단계에서 생성한 키를 선택합니다.
중요
인스턴스 생성 후에는이 선택을 변경할 수 없습니다. 나중에 다른 키를 사용해야 하는 경우 새 인스턴스를 생성해야 합니다.
3단계(선택 사항) - 인스턴스 수준 제한 추가
인스턴스를 생성한 후 키 정책을 업데이트하여 해당 인스턴스에 대한 액세스를 제한합니다. 이렇게 하면 동일한 계정의 다른 인스턴스가 키를 사용하지 못하게 됩니다.
<customer-account-id>, <region>및 <instance-id> (Amazon Connect 결정 콘솔에 표시되는 UUID)를 바꿉니다.
기본 정책의 변경 사항은 다음과 같습니다.
-
인스턴스 ARN으로 제한하여 서비스 보안 주체 문에
aws:SourceArn조건을 추가합니다. -
암호화 컨텍스트가 인스턴스와 일치해야 하는 암호화 작업에
kms:EncryptionContext:aws:scn:arn조건을 추가합니다.
업데이트된 정책(변경되는 문만 표시):
AllowScnRetrievalOfKeyMetadata - ArnLike 조건 추가:
"Condition": { "StringEquals": { "aws:SourceAccount": "<customer-account-id>" }, "ArnLike": { "aws:SourceArn": "arn:aws:scn:<region>:<customer-account-id>:instance/<instance-id>" } }
AllowScnEncryptDecryptWithContext - EncryptionContext 및 SourceArn 조건 추가:
"Condition": { "StringEquals": { "aws:SourceAccount": "<customer-account-id>", "kms:EncryptionContext:aws:scn:arn": "arn:aws:scn:<region>:<customer-account-id>:instance/<instance-id>" }, "ArnLike": { "aws:SourceArn": "arn:aws:scn:<region>:<customer-account-id>:instance/<instance-id>" } }
AllowInstanceRoleEncryptDecrypt - EncryptionContext 조건 추가:
"Condition": { "ArnLike": { "aws:PrincipalArn": "arn:aws:iam::<customer-account-id>:role/scn-instance-role-*" }, "StringEquals": { "kms:EncryptionContext:aws:scn:arn": "arn:aws:scn:<region>:<customer-account-id>:instance/<instance-id>", "kms:ViaService": "scn.<region>.amazonaws.com" } }
고객 관리형 KMS 키를 사용하여 새 인스턴스 생성
Amazon Connect Decisions 콘솔에서 인스턴스 생성 중에 KMS 키를 선택합니다. 인스턴스 생성에 대한 자세한 내용은 Amazon Connect 결정 인스턴스 생성을 참조하세요.
기존 인스턴스에서 암호화 구성 변경
Amazon Connect Decisions는 활성 인스턴스에서 KMS 키 변경을 지원하지 않습니다. 다른 키를 사용해야 하는 경우 원하는 키로 구성된 새 인스턴스를 생성해야 합니다. 이전 키로 암호화된 데이터는 새 인스턴스에 유지되지 않습니다.
고객 관리형 KMS 키에 대한 액세스 범위 축소
다음 메커니즘을 사용하여 키에 대한 액세스를 제한할 수 있습니다.
-
암호화 컨텍스트 - 키 정책
kms:EncryptionContext:aws:scn:arn에서를 사용하여 작업을 특정 인스턴스로 제한합니다(3단계 참조). -
혼동된 대리자 보호 - 서비스가 KMS 호출
aws:SourceArn에서aws:SourceAccount및를 전달합니다. 이러한 조건을 사용하여 계정과 인스턴스만 키에 액세스할 수 있도록 합니다. -
kms:ViaService - 인스턴스 역할은를 통해서만 키에 액세스
scn.<region>.amazonaws.com하므로 서비스 외부에서 직접 사용할 수 없습니다. -
권한 부여 제약 조건 - 권한 부여의 범위는 명시적으로 나열된 작업으로
kms:GrantIsForAWSResource제한됩니다.
참고
종속성 서비스(Redshift Serverless, OpenSearch Serverless, DynamoDB)는 암호화 컨텍스트 또는 혼동된 대리자 헤더를 지원하지 않습니다. 이러한 서비스에 대한 액세스는 kms:ViaService 만 사용하여 범위가 지정됩니다.
AWS KMS와의 Amazon Connect Decisions 상호 작용 모니터링
AWS CloudTrail을 사용하여 Amazon Connect 결정이 사용자를 대신하여 수행하는 KMS 요청을 추적할 수 있습니다. 다음 값을 가진 로그 항목을 찾습니다.
| Field | 예상 값 |
|---|---|
eventName |
|
userIdentity.invokedBy |
|
requestParameters.encryptionContext |
|
이러한 값을 사용하여 CloudTrail 이벤트를 필터링하여 Amazon Connect Decisions가 KMS 키에 액세스하는 시기와 방법을 감사할 수 있습니다.
자세한 내용은 AWS CloudTrail을 사용하여 AWS KMS API 호출 로깅을 참조하세요.