기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS Security Agent에 사용되는 고객 관리형 키
기본적으로 AWS Security Agent는 AWS관리형 암호화 키를 사용하여 저장된 모든 데이터를 암호화합니다. 선택적으로 AWS Key Management Service(AWS KMS)의 고객 관리형 키를 사용하여 데이터를 암호화하여 리소스를 보호하는 암호화 키를 완벽하게 제어할 수 있습니다.
AWS Security Agent는 리소스 수준 고객 관리형 키를 지원합니다. 에이전트 스페이스 또는 통합과 같은 최상위 리소스를 생성할 때 KMS 키를 지정하여 해당 리소스 및 해당 하위 리소스에 속하는 모든 데이터를 암호화할 수 있습니다. 예를 들어 에이전트 스페이스를 생성할 때 고객 관리형 키를 지정하면 에이전트 스페이스 구성, 침투 테스트 구성, 작업 및 실행 세부 정보, 보안 조사 결과, 검색된 엔드포인트 및 스크린샷을 포함하여 해당 에이전트 스페이스와 관련된 모든 데이터가 암호화됩니다. S3 버킷, CloudWatch Logs 로그 그룹 또는 Secrets Manager 보안 암호와 같이 자체 고객 관리형 키로 이미 암호화된 AWS 리소스를 제공할 수도 있습니다. 필요한 KMS 권한은 섹션을 참조하세요필수 KMS 권한.
고객 관리형 키의 작동 방식
AWS Security Agent는 AWS KMS 계층적 키링을 사용하여 고객 관리형 키로 데이터를 암호화합니다. 리소스 생성 중에 KMS 키를 지정하면 서비스는 KMS 키로 보호되는 브랜치 키를 생성하여 Amazon DynamoDB 기반 키 스토어에 저장합니다. 각 암호화 작업에 대해 계층적 키링은 각 요청에 대한 고유한 데이터 암호화 키를 암호화하는 활성 브랜치 키에서 고유한 래핑 키를 도출합니다.
계층적 키링은 다음과 같은 이점을 제공합니다.
-
리소스별 암호화 범위 - 각 최상위 리소스에는 자체 브랜치 키가 있으므로 서로 다른 리소스에 대한 데이터는 별도의 키로 암호화됩니다.
-
자동 키 교체 - AWS Security Agent는 브랜치 키를 주기적으로 교체합니다. 교체 후 새 데이터는 새 브랜치 키 버전으로 암호화되고 이전 버전은 이전에 암호화된 데이터를 해독하기 위해 유지됩니다.
암호화 컨텍스트
AWS Security Agent는 모든 암호화 작업에서 KMS 키를 사용하여 암호화 컨텍스트를 사용합니다. 암호화 컨텍스트는 암호화 작업에 대해 추가로 인증된 데이터를 제공하는 비밀이 아닌 키-값 페어 세트입니다.
암호화 컨텍스트 키는 형식을 따릅니다. aws:securityagent:_<resource-type>_여기서 <resource-type> 는 암호화되는 리소스 유형(예: agent-space 또는 integration)입니다. 값은 리소스의 Amazon 리소스 이름(ARN)입니다.
참고
통합의 경우 암호화 컨텍스트 키에 aws-crypto-ec: 접두사가 포함되어 형식이 됩니다aws-crypto-ec:aws:securityagent:integration.
암호화 컨텍스트를 사용하여 KMS 키 정책의 범위를 특정 리소스 유형으로 좁힐 수 있습니다. 자세한 내용은 필수 KMS 권한 단원을 참조하십시오.
기본 암호화
고객 관리형 키를 지정하지 않고 리소스를 생성하면 AWS Security Agent는 기본 스토리지 서비스(Amazon DynamoDB 및 Amazon S3)에서 제공하는 AWS관리형 암호화 키를 사용하여 리소스를 암호화합니다. 기본 암호화에는 추가 구성이 필요하지 않습니다.
애플리케이션의 기본 KMS 키
애플리케이션 수준에서 기본 KMS 키를 설정할 수 있습니다. 기본 KMS 키가 구성된 경우 리소스 생성 중에 KMS 키를 명시적으로 지정하지 않으면 AWS Security Agent는 이를 새 에이전트 스페이스 및 통합에 대한 대체 키로 사용합니다.
기본 KMS 키를 설정하려면 AWS CLI 또는 SDK를 사용하여 애플리케이션을 생성하거나 업데이트할 때 defaultKmsKeyId 파라미터를 지정합니다. 콘솔에 애플리케이션 설정 중에 기본 KMS 키를 지정하라는 메시지가 표시됩니다.
리소스 생성 중에 KMS 키를 명시적으로 지정하면 애플리케이션 수준 기본값보다 우선합니다.
사전 조건
고객 관리형 키를 구성하기 전에 다음 사전 조건을 완료합니다.
-
KMS에서 대칭 암호화 AWS KMS 키를 생성합니다. 키는 다음 요구 사항을 충족해야 합니다.
-
키 유형: 대칭
-
키 사용: 암호화 및 복호화
-
키 사양:
SYMMETRIC_DEFAULT -
키 상태: 활성화됨
지침은 Key Management Service 개발자 안내서의 키 생성을 참조하세요. AWS
-
-
AWS Security Agent에 필요한 권한을 부여하도록 KMS 키 정책 및 IAM 정책을 구성합니다. 자세한 내용은 필수 KMS 권한을 참조하세요.
필수 KMS 권한
AWS Security Agent에는 두 가지 시나리오에서 KMS 권한이 필요합니다.
-
AWS Security Agent 내에서 데이터 암호화 - 에이전트 스페이스 또는 통합에 대한 고객 관리형 키를 지정하면 서비스에서 데이터에 대한 암호화 작업에 해당 키를 사용할 수 있는 권한이 필요합니다.
-
CMK로 암호화된 AWS 리소스 사용 - 고객 관리형 키(예: S3 버킷, CloudWatch Logs 로그 그룹 또는 Secrets Manager 보안 암호)로 암호화된 AWS 리소스를 제공하는 경우 서비스는 이러한 키를 사용하여 암호화된 리소스에 액세스할 수 있는 권한이 필요합니다.
AWS Security Agent는 작업에 따라 다른 자격 증명을 사용하여 KMS 키에 액세스합니다.
-
AWS 관리 콘솔 작업 - 관리자가 AWS 관리 콘솔에서 리소스를 생성하거나 관리할 때(예: 에이전트 공간 생성 또는 애플리케이션 업데이트) 서비스는 관리자 역할을 사용하여 AWS KMS를 호출합니다.
-
웹 애플리케이션 작업 - IAM Identity Center 사용자가 AWS Security Agent 웹 애플리케이션을 통해 데이터에 액세스하는 경우(예: 침투 테스트 결과 보기 또는 침투 테스트 시작) 서비스는 AWS Security Agent 설정 중에 생성된 애플리케이션 역할을 사용하여 AWS KMS를 호출합니다.
-
고객 제공 리소스 액세스 - 서비스가 침투 테스트 중에 고객 제공 AWS 리소스(예: S3 버킷, CloudWatch Logs 로그 그룹 및 Secrets Manager 보안 암호)에 액세스할 때 침투 테스트 서비스 역할을 사용하여 AWS KMS를 호출합니다.
-
비동기 워크플로 - 사용자 세션 외부에서 실행되는 백그라운드 작업(예: 침투 테스트 실행, 코드 검토 처리 및 브랜치 키 교체)의 경우 서비스는 자체 서비스 보안 주체(
securityagent.amazonaws.com)를 사용하여 사용자를 대신하여 AWS KMS를 호출합니다.
다음 섹션에서는 각 자격 증명에 필요한 권한을 설명합니다.
키 정책
KMS 키 정책은 암호화 작업에 키를 사용할 수 있는 권한을 AWS Security Agent에 부여해야 합니다. 필수 키 정책 설명은 암호화하려는 리소스 유형과 서비스에 제공하는 CMK 암호화 AWS 리소스에 따라 달라집니다.
에이전트 스페이스에 대한 키 정책
다음 키 정책은 AWS Security Agent에 침투 테스트 결과 및 스크린샷을 포함하여 에이전트 스페이스 데이터를 암호화하고 해독하는 데 필요한 권한을 부여합니다.
정책에서 다음 자리 표시자 값을 바꿉니다.
-
111122223333- AWS 계정 ID -
MyRole- 콘솔에서 AWS Security Agent를 관리하는 데 사용하는 IAM 역할 -
MyApplicationRole- AWS Security Agent 설정 중에 생성된 애플리케이션 역할 -
us-east-1- AWS Security Agent를 사용하는 AWS 리전
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowKeyMetadataValidationForApplicationAndAgentSpaces", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyRole" }, "Action": [ "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "securityagent.us-east-1.amazonaws.com" } } }, { "Sid": "AllowUseOfHierarchicalKeyringForAgentSpaces", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyRole" }, "Action": [ "kms:GenerateDataKeyWithoutPlaintext", "kms:ReEncryptTo", "kms:ReEncryptFrom", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:securityagent:agent-space": "arn:aws:securityagent:us-east-1:111122223333:agent-space/*" }, "StringEquals": { "kms:ViaService": "securityagent.us-east-1.amazonaws.com" } } }, { "Sid": "AllowSynchronousDataAccessForAgentSpaces", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyApplicationRole" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:securityagent:agent-space": "arn:aws:securityagent:us-east-1:111122223333:agent-space/*" }, "StringEquals": { "kms:ViaService": "securityagent.us-east-1.amazonaws.com" } } }, { "Sid": "AllowAsynchronousDataAccessForAgentSpaces", "Effect": "Allow", "Principal": { "Service": "securityagent.amazonaws.com" }, "Action": [ "kms:GenerateDataKeyWithoutPlaintext", "kms:Decrypt", "kms:ReEncryptTo", "kms:ReEncryptFrom" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:securityagent:agent-space": "arn:aws:securityagent:us-east-1:111122223333:agent-space/*" }, "ArnLike": { "aws:SourceArn": "arn:aws:securityagent:us-east-1:111122223333:agent-space/*" } } }, { "Sid": "AllowAsynchronousDataAccessForCodeRemediation", "Effect": "Allow", "Principal": { "Service": "securityagent.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" } ] }
중요
브랜치 키를 교체하려면 KMS 키 정책이 AWS Security Agent 서비스 보안 주체(securityagent.amazonaws.com)에게 kms:ReEncryptTo, 및 kms:ReEncryptFrom 권한을 부여해야 합니다. 그렇지 않으면 kms:GenerateDataKeyWithoutPlaintext브랜치 키 교체가 실패합니다. 필요한 권한에 대한 자세한 내용은 브랜치 키 교체를 참조하세요.
통합을 위한 키 정책
다음 키 정책은 코드 검토 조사 결과를 포함하여 통합 데이터를 암호화하고 복호화하는 데 필요한 권한을 AWS Security Agent에 부여합니다.
정책에서 다음 자리 표시자 값을 바꿉니다.
-
111122223333- AWS 계정 ID -
MyRole- 콘솔에서 AWS Security Agent를 관리하는 데 사용하는 IAM 역할 -
us-east-1- AWS Security Agent를 사용하는 AWS 리전
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowKeyAccessValidationForIntegrations", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyRole" }, "Action": [ "kms:GenerateDataKeyWithoutPlaintext", "kms:Decrypt", "kms:Encrypt", "kms:ReEncryptTo", "kms:ReEncryptFrom" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws-crypto-ec:aws:securityagent:integration": "arn:aws:securityagent:us-east-1:111122223333:integration/*" }, "StringEquals": { "kms:ViaService": "securityagent.us-east-1.amazonaws.com" } } }, { "Sid": "AllowKeyMetadataValidationForIntegrations", "Effect": "Allow", "Principal": { "Service": "securityagent.amazonaws.com" }, "Action": "kms:DescribeKey", "Resource": "*" }, { "Sid": "AllowAsynchronousDataAccessForIntegrations", "Effect": "Allow", "Principal": { "Service": "securityagent.amazonaws.com" }, "Action": [ "kms:GenerateDataKeyWithoutPlaintext", "kms:Decrypt", "kms:Encrypt", "kms:ReEncryptTo", "kms:ReEncryptFrom" ], "Resource": "*", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:securityagent:us-east-1:111122223333:integration/*" }, "StringLike": { "kms:EncryptionContext:aws-crypto-ec:aws:securityagent:integration": "arn:aws:securityagent:us-east-1:111122223333:integration/*" } } } ] }
참고
여러 리소스 유형에 동일한 KMS 키를 사용하려는 경우 에이전트 스페이스, 통합 및 보안 요구 사항 팩 키 정책 설명을 단일 키 정책으로 결합할 수 있습니다.
보안 요구 사항 팩에 대한 키 정책
다음 키 정책은 보안 요구 사항 팩 데이터를 암호화하고 해독하는 데 필요한 권한을 AWS Security Agent에 부여합니다. 보안 요구 사항 팩은 웹 애플리케이션 역할을 사용하지 않습니다. 이 정책은 두 가지 액세스 경로를 사용합니다.
-
동기 경로 - API를 호출하면 서비스는 전달된 자격 증명을 사용하여 사용자를 대신하여(
kms:ViaService조건을 통해) AWS KMS를 호출합니다. -
비동기 경로 - 팩을 사용할 수 있는 비동기 작업의 경우 서비스는 자체 서비스 보안 주체를 사용하여 AWS KMS를 직접 호출합니다.
정책에서 다음 값을 바꿉니다.
-
111122223333- AWS 계정 ID -
MyRole- 보안 요구 사항 팩 작업을 호출하는 데 사용하는 IAM 역할 -
us-east-1- AWS Security Agent를 사용하는 AWS 리전
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowKeyMetadataValidation", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyRole" }, "Action": [ "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "securityagent.us-east-1.amazonaws.com" } } }, { "Sid": "AllowUseOfHierarchicalKeyringForSecurityPacks", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyRole" }, "Action": [ "kms:GenerateDataKeyWithoutPlaintext", "kms:ReEncryptTo", "kms:ReEncryptFrom", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "securityagent.us-east-1.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:securityagent:security-requirement-pack": "arn:aws:securityagent:us-east-1:111122223333:security-requirement-pack/*" } } }, { "Sid": "AllowAsynchronousDataAccessForSecurityPacks", "Effect": "Allow", "Principal": { "Service": "securityagent.amazonaws.com" }, "Action": [ "kms:GenerateDataKeyWithoutPlaintext", "kms:Decrypt", "kms:ReEncryptTo", "kms:ReEncryptFrom" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:securityagent:security-requirement-pack": "arn:aws:securityagent:us-east-1:111122223333:security-requirement-pack/*" }, "ArnLike": { "aws:SourceArn": "arn:aws:securityagent:us-east-1:111122223333:security-requirement-pack/*" } } } ] }
정책에는 다음 세 가지 명령문이 포함되어 있습니다.
-
AllowKeyMetadataValidation - AWS Security Agent가 리소스 생성 중에 CMK를 지정할 때 고객 관리형 키가 존재하는지, 활성화되었는지, 대칭 암호화를 사용하는지 검증할 수
kms:DescribeKey있도록 권한을 부여합니다.kms:ViaService조건을 사용하여 호출이 서비스를 통해 시작되도록 합니다. -
AllowUseOfHierarchicalKeyringForSecurityPacks – 계층적 키링 작업에 대한 권한 부여
kms:GenerateDataKeyWithoutPlaintext(새 브랜치 키 생성)kms:ReEncryptTo및kms:ReEncryptFrom(기존 브랜치 키 교체) 및kms:Decrypt(기존 브랜치 키 검색) 이러한 작업은 동기 경로를 통해 전달된 자격 증명을 사용하며 암호화 컨텍스트 조건에 따라 보안 요구 사항 팩 리소스로 범위가 지정됩니다. -
AllowAsynchronousDataAccessForSecurityPacks - 호출자 자격 증명을 사용할 수 없는 경우 비동기 작업을 위해 AWS Security Agent 서비스 보안 주체
kms:ReEncryptFrom에kms:GenerateDataKeyWithoutPlaintextkms:Decrypt,kms:ReEncryptTo, 및를 부여합니다.
에이전트 스페이스 키 정책과 달리 보안 요구 사항 팩 정책에는 웹 애플리케이션 역할 보안 주체가 포함되지 않습니다. 보안 요구 사항 팩은 AWS Security Agent 웹 애플리케이션이 아닌 관리자 역할을 사용하여 AWS Management Console을 통해 액세스됩니다. 모든 동기 작업은 단일 호출자 역할(를 통해)을 사용합니다kms:ViaService.
참고
에이전트 스페이스와 보안 요구 사항 팩 모두에 동일한 KMS 키를 사용하는 경우 두 섹션의 키 정책 설명을 단일 키 정책으로 결합할 수 있습니다.
CMK 암호화 AWS 리소스에 대한 키 정책
고객 관리형 키로 암호화된 AWS 리소스를 AWS Security Agent에 제공하는 경우 각 리소스의 KMS 키에 대한 키 정책을 업데이트하여 필요한 권한을 부여해야 합니다. 이는 다음 리소스에 적용됩니다.
-
S3 버킷 - 고객 관리형 키(SSE-KMS)로 암호화된 S3 버킷에서 학습 리소스를 제공하는 경우 키 정책은 침투 테스트 서비스 역할이 객체를 복호화하도록 허용해야 합니다.
-
Secrets Manager 보안 암호 - 침투 테스트 보안 인증 정보가 고객 관리형 키로 암호화된 Secrets Manager 보안 암호에 저장되는 경우 키 정책은 침투 테스트 서비스 역할이 해당 보안 암호를 해독하도록 허용해야 합니다. 웹 애플리케이션이 사용자를 대신하여 보안 암호를 생성하는 경우 키 정책은 애플리케이션 역할이 해당 보안 암호를 암호화하도록 허용해야 합니다.
-
CloudWatch Logs 로그 그룹 - 침투 테스트 실행 로그를 저장하는 데 사용되는 CloudWatch Logs 로그 그룹이 고객 관리형 키로 암호화된 경우 키 정책은 CloudWatch Logs가 서비스 역할을 통해 KMS 키를 검증하고 CloudWatch Logs 서비스 보안 주체가 암호화 작업을 수행하도록 허용해야 합니다.
중요
AWS Security Agent는 사용자를 대신하여 CloudWatch Logs 로그 그룹 및 Secrets Manager 보안 암호를 생성할 수도 있습니다. KMS 키 정책을 구성할 때 이러한 서비스 생성 리소스에 해당하는 문도 포함합니다.
다음 키 정책 문은 CMK 암호화 리소스에 필요한 권한을 부여합니다. 구성에 적용되는 문만 포함합니다. 리소스가 에이전트 스페이스에 대해 지정한 것과 동일한 KMS 키를 사용하는 경우이 명령문을 해당 키의 정책에 추가합니다. 리소스가 다른 KMS 키를 사용하는 경우 대신 해당 키의 정책에 이러한 문을 추가합니다.
정책에서 다음 자리 표시자 값을 바꿉니다.
-
111122223333- AWS 계정 ID -
MyApplicationRole- AWS Security Agent 설정 중에 생성된 애플리케이션 역할 -
MyPenTestServiceRole- 침투 테스트 서비스 역할 -
us-east-1- AWS Security Agent를 사용하는 AWS 리전
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowKmsKeyAccessForCreatingSecrets", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyApplicationRole" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceAccount": "111122223333" }, "StringLike": { "kms:ViaService": "secretsmanager.*.amazonaws.com", "kms:EncryptionContext:SecretARN": "arn:aws:secretsmanager:us-east-1:111122223333:secret:*" } } }, { "Sid": "AllowKmsKeyDecryptionForS3Objects", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyPenTestServiceRole" }, "Action": [ "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceAccount": "111122223333" }, "StringLike": { "kms:ViaService": "s3.*.amazonaws.com", "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::YOUR-BUCKET-NAME*" } } }, { "Sid": "AllowKmsKeyDecryptionForSecretsManagerSecrets", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyPenTestServiceRole" }, "Action": [ "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceAccount": "111122223333" }, "StringLike": { "kms:ViaService": "secretsmanager.*.amazonaws.com", "kms:EncryptionContext:SecretARN": "arn:aws:secretsmanager:us-east-1:111122223333:secret:YOUR-SECRET-NAME*" } } }, { "Sid": "AllowKmsKeyValidationForCloudWatchLogsLogGroups", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyPenTestServiceRole" }, "Action": [ "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceAccount": "111122223333" }, "StringLike": { "kms:ViaService": "logs.*.amazonaws.com" } } }, { "Sid": "AllowKmsKeyAccessForCloudWatchLogsLogGroups", "Effect": "Allow", "Principal": { "Service": "logs.us-east-1.amazonaws.com" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceAccount": "111122223333" }, "StringLike": { "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:us-east-1:111122223333:log-group:YOUR-LOG-GROUP-NAME*" } } } ] }
참고
-
AllowKmsKeyDecryptionForS3Objects문은 고객 관리형 키로 암호화된 S3 버킷에서 학습 리소스를 제공하는 경우에만 필요합니다. S3용 SSE-KMS 구성에 대한 자세한 내용은 SSE-KMS로 데이터 보호를 참조하세요. -
AllowKmsKeyDecryptionForSecretsManagerSecrets문은 침투 테스트 자격 증명이 고객 관리형 키로 암호화된 Secrets Manager 보안 암호에 저장된 경우에만 필요합니다. 서비스 역할은 침투 테스트 중에 보안 암호를 해독할 수 있는 액세스 권한이 필요합니다. 보안 암호 암호화에 대한 자세한 내용은 Secrets Manager의 보안 암호 암호화 및 복호화를 참조하세요. -
이
AllowKmsKeyValidationForCloudWatchLogsLogGroups문은 서비스 역할을 부여kms:DescribeKey하므로 CloudWatch Logs는 서비스 역할을 통해 KMS 키를 로그 그룹과 연결할 때 KMS 키를 검증할 수 있습니다. -
이
AllowKmsKeyAccessForCreatingSecrets문은 웹 애플리케이션이 고객 관리형 키를 사용하여 사용자를 대신하여 Secrets Manager 보안 암호를 생성하는 경우에 필요합니다. 애플리케이션 역할에는 KMS 키로 보안 암호를 암호화하는kms:GenerateDataKeykms:Decrypt및가 필요합니다. -
AllowKmsKeyAccessForCloudWatchLogsLogGroups문은 CloudWatch Logs 서비스 보안 주체(logs.us-east-1.amazonaws.com)에게 로그 데이터를 암호화하고 해독하는 데 필요한 권한을 부여합니다. 이 명령문은 AWS Security Agent가 기존 로그 그룹을 제공하지 않을 때 사용자를 대신하여 로그 그룹을 생성하는 경우에도 필요합니다. 자세한 내용은 AWS KMS를 사용하여 CloudWatch Logs에서 로그 데이터 암호화를 참조하세요. -
여러 리소스가 동일한 KMS 키를 공유하는 경우 문을 단일 키 정책으로 결합할 수 있습니다.
관리자 역할
관리자 역할(콘솔에서 AWS Security Agent를 관리하는 데 사용하는 IAM 역할)에는 추가 IAM 정책이 필요하지 않습니다.
애플리케이션 역할
KMS 키 정책 외에도 AWS Security Agent 설정 중에 지정된 애플리케이션 역할에 다음 IAM 정책을 연결합니다. 이 정책은 역할에게 고객 관리형 키를 사용하여 에이전트 스페이스 데이터를 암호화 및 해독하고 AWS Secrets Manager에서 보안 암호를 생성할 수 있는 권한을 부여합니다.
정책에서 다음 자리 표시자 값을 바꿉니다.
-
111122223333- AWS 계정 ID -
us-east-1- AWS Security Agent를 사용하는 AWS 리전 -
의 KMS 키 ARNs
Resource- KMS 키의 ARNs
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSynchronousDataAccessForAgentSpaces", "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890cd" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "111122223333", "kms:ViaService": "securityagent.us-east-1.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:securityagent:agent-space": "arn:aws:securityagent:us-east-1:111122223333:agent-space/*" } } }, { "Sid": "AllowKmsKeyAccessForCreatingSecrets", "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890cd" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "111122223333" }, "StringLike": { "kms:ViaService": "secretsmanager.*.amazonaws.com", "kms:EncryptionContext:SecretARN": "arn:aws:secretsmanager:us-east-1:111122223333:secret:*" } } } ] }
참고
애플리케이션 역할은 사용자가 지정하거나 AWS 보안 에이전트 설정 중에 콘솔이 생성하는 IAM 역할입니다. 웹 애플리케이션은이 역할을 수임하여 침투 테스트 실행 로그를 검색하고 사용자를 대신하여 Secrets Manager 보안 암호를 생성합니다.
-
AllowKmsKeyAccessForCreatingSecrets문은 침투 테스트를 위한 인증 리소스를 구성하고 기존 보안 암호를 지정하는 대신 자격 증명을 직접 입력하도록 선택한 경우에 필요합니다. 웹 애플리케이션은 사용자를 대신하여 보안 암호를 생성하며, 에이전트 스페이스에 지정된 고객 관리형 키로 보안 암호를 암호화하려면 애플리케이션 역할에이 문의 권한이 필요합니다. 에이전트 스페이스에 사용되는 KMS 키와 일치하도록이 문의ResourceARNs을 업데이트합니다.
서비스 역할
침투 테스트 중에 AWS Security Agent는 침투 테스트 서비스 역할을 수임하여 AWS 리소스에 액세스합니다. 이러한 리소스가 고객 관리형 키로 암호화된 경우 서비스 역할에 해당 KMS 키를 사용할 수 있는 권한을 부여해야 합니다. 이는 다음 리소스에 적용됩니다.
-
S3 버킷 - 고객 관리형 키로 암호화된 S3 버킷에서 학습 리소스(예: API 문서, 위협 모델 또는 소스 코드)를 제공하는 경우 서비스 역할에는 해당 버킷의 객체를 복호화할 수 있는 권한이 필요합니다. S3용 SSE-KMS 구성에 대한 자세한 내용은 SSE-KMS로 데이터 보호를 참조하세요.
-
Secrets Manager 보안 암호 - 침투 테스트 보안 인증 정보가 고객 관리형 키로 암호화된 Secrets Manager 보안 암호에 저장되는 경우 서비스 역할에는 해당 보안 암호를 해독할 수 있는 권한이 필요합니다. 보안 암호 암호화에 대한 자세한 내용은 Secrets Manager의 보안 암호 암호화 및 암호 해독을 참조하세요.
-
CloudWatch Logs 로그 그룹 - 침투 테스트 실행 로그를 저장하는 데 사용되는 CloudWatch Logs 로그 그룹이 고객 관리형 키( 사용자를 대신하여 AWS Security Agent에서 생성한 로그 그룹 포함)로 암호화된 경우 서비스 역할에 키를 검증할
kms:DescribeKey권한이 필요합니다. CloudWatch Logs 서비스 보안 주체는 로그 데이터의 실제 암호화 및 복호화를 처리하며, 이러한 권한은 키 정책을 통해 부여됩니다( 참조키 정책). 로그 데이터 암호화에 대한 자세한 내용은 AWS KMS를 사용하여 CloudWatch Logs에서 로그 데이터 암호화를 참조하세요.
중요
에이전트 스페이스에 지정한 것과 다른 KMS 키를 사용하여 이러한 리소스를 암호화하는 경우 서비스 역할이 침투 테스트 중에 액세스하는 리소스를 보호하는 각 KMS 키에 대해 서비스 역할 권한을 부여해야 합니다.
침투 테스트 서비스 역할에 다음 IAM 정책을 연결합니다. 구성에 적용되는 문만 포함합니다.
정책에서 다음 자리 표시자 값을 바꿉니다.
-
111122223333- AWS 계정 ID -
us-east-1- AWS Security Agent를 사용하는 AWS 리전 -
의 KMS 키 ARNs
Resource- 각 리소스를 암호화하는 데 사용되는 고객 관리형 키의 ARNs
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowKmsAccessForEncryptedS3Buckets", "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-east-1:111122223333:key/EXAMPLE-S3-KEY-ID" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "111122223333" }, "StringLike": { "kms:ViaService": "s3.*.amazonaws.com", "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::YOUR-BUCKET-NAME*" } } }, { "Sid": "AllowKmsAccessForEncryptedSecrets", "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-east-1:111122223333:key/EXAMPLE-SECRETS-KEY-ID" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "111122223333" }, "StringLike": { "kms:ViaService": "secretsmanager.*.amazonaws.com", "kms:EncryptionContext:SecretARN": "arn:aws:secretsmanager:us-east-1:111122223333:secret:YOUR-SECRET-NAME*" } } }, { "Sid": "AllowKmsKeyValidationForCloudWatchLogsLogGroups", "Effect": "Allow", "Action": [ "kms:DescribeKey" ], "Resource": [ "arn:aws:kms:us-east-1:111122223333:key/EXAMPLE-CLOUDWATCH-LOGS-KEY-ID" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "111122223333" }, "StringLike": { "kms:ViaService": "logs.*.amazonaws.com" } } } ] }
참고
-
AllowKmsAccessForEncryptedS3Buckets문은 고객 관리형 키로 암호화된 S3 버킷에서 학습 리소스를 제공하는 경우에만 필요합니다. S3 버킷을 암호화하는 데 사용되는 KMS 키와 일치하도록ResourceARN을 업데이트하고 버킷 이름과 일치하도록kms:EncryptionContext:aws:s3:arn값을 업데이트합니다. -
AllowKmsAccessForEncryptedSecrets문은 침투 테스트 자격 증명이 고객 관리형 키로 암호화된 Secrets Manager 보안 암호에 저장된 경우에만 필요합니다. 보안 암호를 암호화하는 데 사용되는 KMS 키와 일치하도록ResourceARN을 업데이트하고 보안 암호 이름과 일치하도록kms:EncryptionContext:SecretARN값을 업데이트합니다. -
명령
AllowKmsKeyValidationForCloudWatchLogsLogGroups문은 CloudWatch Logs 로그 그룹이 사용자를 대신하여 AWS Security Agent에서 생성한 로그 그룹을 포함하여 고객 관리형 키로 암호화된 경우에만 필요합니다. 로그 그룹을 암호화하는 데 사용되는 KMS 키와 일치하도록ResourceARN을 업데이트합니다. -
여러 리소스가 동일한 KMS 키를 공유하는 경우 문을 결합하고
Resource필드에 공유 키 ARN을 한 번 나열할 수 있습니다.
고객 관리형 키를 사용하여 리소스 생성
AWS Security Agent를 설정하거나 개별 리소스를 생성할 때 고객 관리형 키를 지정할 수 있습니다. KMS 키는 해당 리소스 및 해당 하위 리소스에 속하는 모든 데이터를 암호화합니다.
설정 중 기본 KMS 키 설정(콘솔)
초기 AWS Security Agent 설정 중에 기본 KMS 키를 구성할 수 있습니다. 이 키는 다른 키를 지정하지 않는 한 새 에이전트 스페이스 및 통합의 기본값으로 사용됩니다.
-
AWS Security Agent 설정 페이지에서 암호화 - 선택 사항 섹션을 확장합니다.
-
암호화 설정 사용자 지정(고급)을 선택합니다.
-
AWS KMS 키 선택에 계정에서 KMS 키를 선택하거나 KMS 키 ARN을 입력합니다.
-
나머지 설정 단계를 완료하고 AWS Security Agent 설정을 선택합니다.
AWS Security Agent는 KMS 키를 검증하여 KMS 키가 존재하는지, 활성화되었는지, 대칭 암호화를 사용하는지 확인합니다. 검증에 실패하면 설정이 진행되지 않고 오류 메시지가 표시됩니다.
고객 관리형 키를 사용하여 에이전트 공간 생성(콘솔)
-
AWS Security Agent 콘솔에서 에이전트 스페이스 페이지로 이동합니다.
-
에이전트 공간 생성을 선택합니다.
-
에이전트 스페이스의 이름과 선택적 설명을 입력합니다.
-
[Advanced] 섹션을 확장합니다.
-
데이터 암호화에서 다음 중 하나를 선택합니다.
-
애플리케이션 기본 키 사용 - AWS Security Agent 설정 중에 구성된 기본 KMS 키를 사용합니다. 기본 키가 구성된 경우이 옵션이 기본적으로 선택됩니다.
-
다른 키 사용 -이 에이전트 스페이스에 대해 다른 KMS 키를 지정합니다. 암호화 설정 사용자 지정(고급)을 선택한 다음 AWS KMS 키 선택에 계정에서 KMS 키를 선택하거나 ARN을 입력합니다.
-
-
생성(Create)을 선택합니다.
고객 관리형 키와의 통합 생성(콘솔)
-
AWS Security Agent 콘솔에서 통합 페이지로 이동합니다.
-
통합 추가를 선택하고 공급자(예: GitHub)를 선택합니다.
-
1단계 완료: 공급자 애플리케이션을 설치하고 승인합니다.
-
2단계: 세부 정보 등록에서 등록 이름을 입력하고 공급자 설정을 구성합니다.
-
데이터 암호화 섹션에서 암호화 설정 사용자 지정(고급)을 선택합니다.
-
AWS KMS 키 선택에 계정에서 KMS 키를 선택하거나 KMS 키 ARN을 입력합니다.
-
연결을 선택합니다.
고객 관리형 키(AWS CLI 또는 SDK)를 사용하여 리소스 생성
AWS CLI 또는 SDK를 사용하여 고객 관리형 키를 지정하려면
-
애플리케이션의 기본 KMS 키를 설정
CreateApplication하기 위해를 호출할 때defaultKmsKeyId파라미터를 포함합니다. 이 키는 명시적 KMS 키 없이 에이전트 스페이스 또는 통합을 생성할 때 대체 키로 사용됩니다. -
CreateAgentSpace또는를 호출CreateIntegration할 때kmsKeyId파라미터를 포함하여 특정 리소스를 암호화합니다. 이는 애플리케이션 수준 기본값보다 우선합니다.
파라미터 세부 정보는 AWS Security Agent API 참조를 참조하세요.
KMS 키를 지정하지 않으면 AWS Security Agent는 애플리케이션 수준 기본 KMS 키가 구성된 경우 이를 사용합니다. 그렇지 않으면 리소스가 AWS관리형 키로 암호화됩니다.
키 교체
AWS Security Agent는 정기적으로 브랜치 키를 자동으로 교체합니다. 브랜치 키 교체는 모든 이전 버전을 유지하면서 브랜치 키의 새 활성 버전을 생성합니다. 교체 후:
-
새 데이터는 새 브랜치 키 버전으로 암호화됩니다.
-
이전에 암호화된 데이터는 이전 브랜치 키 버전을 사용하여 복호화할 수 있습니다.
-
데이터 재암호화는 필요하지 않습니다.
브랜치 키 교체는 KMS 키 교체와는 별개입니다. 고객 관리형 키에 대해 자동 KMS 키 교체를 독립적으로 활성화할 수 있습니다. 자세한 내용은 AWS Key Management Service 개발자 안내서의 KMS 키 교체를 참조하세요.
브랜치 키 교체 후에도 새 암호화 작업에 이전 브랜치 키의 캐시된 복사본을 계속 사용할 수 있는 짧은 기간이 있습니다. 이 기간은 내부 캐시 TTL(time-to-live)에 의해 결정되며 데이터 보안에 영향을 주지 않습니다.
고려 사항
AWS Security Agent에서 고객 관리형 키를 사용할 때는 다음 사항에 유의하세요.
-
고객 관리형 키는 새 리소스에만 적용됩니다. 고객 관리형 키를 구성하기 전에 생성된 기존 리소스는 계속해서 AWS관리형 암호화를 사용합니다. 기존 데이터의 마이그레이션은 없습니다.
-
고객 관리형 키는 생성 시 지정됩니다. 리소스를 생성할 때 KMS 키를 지정합니다. 기존 리소스에 대한 KMS 키는 추가하거나 변경할 수 없습니다.
-
여러 KMS 키가 지원됩니다. 리소스마다 다른 KMS 키를 사용할 수 있습니다. 예를 들어 프로덕션 에이전트 스페이스에는 하나의 키를 사용하고 개발 에이전트 스페이스에는 다른 키를 사용할 수 있습니다.
-
KMS 키를 비활성화하거나 삭제하면 데이터에 액세스할 수 없게 됩니다. KMS 키의 삭제를 비활성화하거나 예약하면 AWS Security Agent는 해당 키로 암호화된 데이터를 해독할 수 없습니다. 영향을 받는 리소스는 키가 다시 활성화될 때까지 액세스할 수 없게 됩니다. KMS 키를 삭제하면 해당 키로 암호화된 모든 데이터에 영구적으로 액세스할 수 없습니다.
-
키 정책 권한이 필요합니다. KMS 키 정책에서 필요한 권한을 제거하면 AWS Security Agent는 암호화된 데이터에 액세스할 수 없습니다. 키 정책이에 설명된 대로 관리자 역할( AWS 콘솔에서 서비스를 관리하는 데 사용됨), 애플리케이션 역할(웹 애플리케이션에서 사용됨), 침투 테스트 서비스 역할(에이전트가 침투 테스트를 실행하기 위해 수임함) 및 AWS Security Agent 서비스 보안 주체에 대한 권한을 부여하는지 확인합니다필수 KMS 권한.
-
AWS KMS 할당량이 적용됩니다. KMS 키에 대한 암호화 작업은 AWS KMS 요청 할당량에 포함됩니다. 일반적인 사용에서 계층적 키링 아키텍처는 브랜치 키 캐싱을 통해 KMS 호출을 최소화합니다. 자세한 내용은 AWS Key Management Service 개발자 안내서의 할당량 요청을 참조하세요.