기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Step Functions의 미사용 데이터 암호화
블로그 읽기
고객 관리 키를 통한 데이터 보안 강화에서 고객 AWS KMS
AWS Step Functions 투명한 서버 측 암호화를 사용하여 저장된 데이터를 항상 암호화합니다. 기본적으로 저장된 데이터를 암호화하면 민감한 데이터 보호와 관련된 운영 오버헤드와 복잡성이 줄어듭니다. 엄격한 암호화 규정 준수 및 규제 요구 사항을 충족하는 보안에 민감한 애플리케이션을 구축할 수 있습니다.
이 암호화 계층을 비활성화하거나 다른 암호화 유형을 선택할 수는 없지만, 상태 시스템 및 활동 리소스를 생성할 때 고객 관리 키를 선택하여 기존 AWS 소유 암호화 키 위에 두 번째 암호화 계층을 추가할 수 있습니다.
-
고객 관리 키 — Step Functions는 사용자가 생성하고 소유하고 관리하는 대칭형 고객 관리 키를 사용하여 기존 AWS 소유 암호화에 두 번째 암호화 계층을 추가할 수 있도록 지원합니다. 이 암호화 계층을 완전히 제어할 수 있으므로 다음과 같은 작업을 수행할 수 있습니다.
-
키 정책 수립 및 유지
-
IAM정책 및 부여의 수립 및 유지 관리
-
키 정책 활성화 및 비활성화
-
키 암호화 자료 교체
-
태그 추가
-
키 별칭 생성
-
삭제를 위한 스케줄 키
자세한 내용은 AWS Key Management Service 개발자 안내서의 고객 관리 키를 참조하십시오.
-
AWS Step Functions 상태 시스템 및 활동을 위한 고객 관리 키를 사용하여 데이터를 암호화할 수 있습니다. 스테이트 머신을 만들거나 업데이트할 때와 AWS KMS 액티비티를 생성할 때 대칭 키와 데이터 키 재사용 기간을 구성할 수 있습니다. 실행 기록과 스테이트 머신 정의는 스테이트 머신에 적용된 키로 암호화됩니다. 액티비티 입력은 액티비티에 적용된 키로 암호화됩니다.
고객 관리 AWS KMS 키를 사용하면 보호된 건강 정보 (PHI) 가 포함된 고객 데이터를 무단 액세스로부터 보호할 수 있습니다. Step CloudTrail Functions가 와 통합되어 CloudTrail 콘솔의 이벤트 기록에서 가장 최근 이벤트를 보고 감사할 수 있습니다.
에 대한 AWS KMS자세한 내용은 AWS Key Management Service무엇입니까를 참조하십시오.
참고
Step Functions는 AWS 소유 키를 사용하여 저장 시 암호화를 무료로 자동으로 활성화합니다. 하지만 고객 관리 키를 사용할 때는 AWS KMS 요금이 부과됩니다. 요금에 대한 자세한 정보는 AWS Key Management Service 요금
고객 관리 키를 사용한 암호화
Step Functions는 페이로드 데이터를 다른 서비스로 전달하여 작업을 수행하기 전에 고객 관리 AWS KMS 키로 페이로드 데이터를 복호화합니다. 데이터는 전송 계층 보안 () 을 사용하여 전송 중에 암호화됩니다. TLS
통합 서비스에서 데이터가 반환되면 Step Functions는 고객 관리 AWS KMS 키로 데이터를 암호화합니다. 동일한 키를 사용하여 여러 AWS 서비스에 암호화를 일관되게 적용할 수 있습니다.
고객 관리 키는 다음 리소스와 함께 사용할 수 있습니다.
-
스테이트 머신 - 표준 및 익스프레스 워크플로 유형 모두
-
활동
Step Functions가 데이터를 암호화하는 데 사용하는 KMS키 ID를 입력하여 데이터 키를 지정할 수 있습니다.
-
KMS키 ID — 키 ID, 키, 별칭 이름 또는 별칭 형태의 AWS KMS 고객 관리 키의 키 ARN 식별자입니다. ARN
고객 관리 키로 스테이트 머신 생성
전제 조건: 고객 관리 AWS KMS 키를 사용하여 상태 머신을 만들려면 먼저 사용자 또는 역할에 및 에 AWS KMS DescribeKey
대한 권한이 있어야 합니다. GenerateDataKey
AWS 콘솔에서, 를 통해 또는 리소스를 통해 인프라를 프로비저닝하여 다음 단계를 수행할 수 있습니다. API AWS CloudFormation (CloudFormation 예제는 이 가이드 뒷부분에 나와 있습니다.)
1단계: AWS KMS 키 생성
AWS KMS 콘솔 또는 AWS KMS APIs 을 사용하여 대칭적인 고객 관리 키를 생성할 수 있습니다.
대칭형 고객 관리형 키를 생성하려면
AWS Key Management Service 개발자 안내서의 대칭형 고객 관리형 키 생성 단계를 따르세요.
참고
선택 사항: 키를 생성할 때 키 관리자를 선택할 수 있습니다. 선택한 사용자 또는 역할에는 를 통해 키를 활성화 또는 비활성화하는 등 키를 관리할 수 있는 액세스 권한이 부여됩니다API. 키 사용자를 선택할 수도 있습니다. 이러한 사용자 또는 역할에는 암호화 작업에 AWS KMS 키를 사용할 수 있는 권한이 부여됩니다.
2단계: AWS KMS 키 정책 설정
키 정책은 고객 관리형 키에 대한 액세스를 제어합니다. 모든 고객 관리형 키에는 키를 사용할 수 있는 사람과 키를 사용하는 방법을 결정하는 문장이 포함된 정확히 하나의 키 정책이 있어야 합니다. 고객 관리형 키를 생성할 때 키 정책을 지정할 수 있습니다. 자세한 내용은 AWS Key Management Service 개발자 안내서의 고객 관리 키에 대한 액세스 관리를 참조하십시오.
다음은 키 관리자 또는 AWS KMS 키 사용자를 제외한 콘솔의 키 정책 예시입니다.
{ "Version": "2012-10-17", "Id": "key-consolepolicy-1", "Statement": [ { "Sid": "Enable IAM User Permissions for the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": "kms:*", "Resource": "*" } ] }
정책에서의 권한 지정 및 키 액세스 문제 해결에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서를 참조하십시오.
3단계: (선택 사항) 로그를 CloudWatch 암호화하기 위한 키 정책 추가
Step Functions는 로깅 및 모니터링을 CloudWatch 위해 통합되었습니다. CloudWatch Logs로 전송된 데이터를 암호화하는 옵션이 있습니다. 암호화된 로깅을 사용하려면 상태 시스템 키 정책의 로그 전달 서비스에 대한 액세스 권한을 AWS KMS 작업에 제공해야 합니다. 상태 시스템 키를 사용하여 로그 그룹을 암호화하거나 로그 그룹 전용 키 (예: “로그 그룹 키”) 를 선택할 수 있습니다.
상태 시스템에 암호화된 CloudWatch 로그 통합을 활성화하려면 AWS KMS 키 정책에 다음을 추가해야 합니다.
{ "Id": "key-consolepolicy-logging", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable log service for a single log group", "Effect": "Allow", "Principal": { "Service": "logs.
region
.amazonaws.com" }, "Action": [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:Describe*" ], "Resource": "*", "Condition": { "ArnEquals": { "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:region
:account-id
:log-group:log-group-name
" } } } ] }
참고
이 Condition
섹션에서는 AWS KMS 키를 단일 로그 그룹으로 ARN 제한합니다.
또한 다음 키 정책과의 통합을 위해 로그 서비스 전송을 활성화해야 합니다.
{ "Sid": "Enable log service delivery for integrations", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "kms:Decrypt*", "Resource": "*" }
4단계: 스테이트 머신 생성
키를 생성하고 정책을 설정한 후 해당 키를 사용하여 새 상태 머신을 만들 수 있습니다.
상태 머신을 생성할 때 추가 구성을 선택한 다음 고객 관리 키로 암호화하도록 선택합니다. 그런 다음 키를 선택하고 데이터 키 재사용 기간을 1분에서 15분으로 설정할 수 있습니다.
선택적으로 로그 수준을 설정하고 키를 사용하여 로그 그룹을 암호화하도록 선택하여 로깅을 활성화할 수 있습니다 AWS KMS .
참고
Step Functions 콘솔의 새 로그 그룹에서만 암호화를 활성화할 수 있습니다. AWS KMS 키를 기존 로그 그룹과 연결하는 방법을 알아보려면 AWS KMS 키를 로그 그룹에 연결을 참조하십시오.
5단계: 키로 AWS KMS 암호화된 스테이트 머신 호출
평소처럼 암호화된 상태 시스템을 호출할 수 있으며, 그러면 데이터가 고객 관리 키로 암호화됩니다.
고객 관리 키를 사용하여 표준 워크플로와 Asynchronous Express 워크플로의 실행을 시작하려면 실행 역할에 및 권한이 필요합니다. kms:Decrypt
kms:GenerateDataKey
동기식 익스프레스 실행을 위한 실행 역할이 필요합니다. kms:Decrypt
콘솔에서 상태 머신을 생성하고 새 역할 생성을 선택하면 이러한 권한이 자동으로 포함됩니다.
고객 관리 키로 활동을 생성하세요.
고객 관리 키로 Step Functions 활동을 생성하는 것은 고객 관리 키로 상태 머신을 생성하는 것과 비슷합니다. 고객 관리 AWS KMS 키로 활동을 만들려면 먼저 사용자 또는 역할에 다음과 같은 AWS KMS 권한만 있으면 DescribeKey
됩니다. 활동을 생성하는 동안 키를 선택하고 암호화 구성 파라미터를 설정합니다.
참고로 Step Functions 액티비티 리소스는 변경할 수 없습니다. 기존 ARN 활동의 활동을 업데이트할 수 없습니다. 새 활동 리소스를 만들어야 합니다. encryptionConfiguration
활동 API 엔드포인트 호출자에게는 키를 사용하여 활동을 성공적으로 생성할 수 있는 kms:DescribeKey
AWS KMS 권한이 있어야 합니다.
활동 태스크에서 고객 관리형 키 암호화를 활성화하면 상태 시스템 실행 역할에 활동 키에 대한 kms:Decrypt
권한 kms:GenerateDataKey
및 권한이 필요합니다. Step Functions 콘솔에서 이 상태 머신을 생성하는 경우 자동 역할 생성 기능이 이러한 권한을 추가합니다.
조건에 따라 AWS KMS 권한 정책의 범위를 좁힐 수 있습니다.
키 정책 및 IAM 정책의 암호화 컨텍스트를 사용하여 대칭 고객 관리 키에 대한 conditions
액세스를 제어할 수 있습니다. 특정 역할을 대신하는 Step Functions의 요청에만 AWS KMS 키 사용을 제한하려면 kms:ViaService
조건을 사용할 수 있습니다.
암호화 컨텍스트를 사용한 범위 지정
암호화 컨텍스트는 데이터에 대한 추가 컨텍스트 정보를 포함하는 선택적 키-값 페어 세트입니다.
AWS KMS 암호화 컨텍스트를 인증된 추가 데이터로 사용하여 인증된 암호화를 지원합니다. 데이터 암호화 요청에 암호화 컨텍스트를 포함하면 암호화 컨텍스트를 암호화된 데이터에 AWS KMS 바인딩합니다. 요청에 동일한 암호화 컨텍스트를 포함해야 이 데이터를 해독할 수 있습니다.
Step Functions는 암호화 작업의 AWS KMS 암호화 컨텍스트를 제공합니다. 여기서 키는 상태 머신 또는 aws:states:activityArn
액티비티용이고 값은 리소스 Amazon Resource Name (ARN) 입니다. aws:states:stateMachineArn
"encryptionContext": {"aws:states:stateMachineArn": "arn:aws:states:region
:123456789012:stateMachine:state_machine_name
"}
"encryptionContext": {"aws:states:activityArn": "arn:aws:states:region
:123456789012:activity:activity_name
"}
다음 예제는 aws:states:stateMachineArn
컨텍스트 AWS KMS 키를 사용하여 실행 역할의 키 사용을 특정 상태 머신으로 kms:EncryptionContext
제한하는 방법을 보여줍니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow KMS Permissions for StepFunctionsWorkflowExecutions", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:aa-example-1:1234567890:key/a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa" ], "Condition": { "StringEquals": { "kms:EncryptionContext:aws:states:stateMachineArn": "arn:aws:states:aa-example-1:1234567890:stateMachine:MyStateMachine" } } } ] }
kms를 사용한 범위 지정: ViaService
kms:ViaService
조건 키는 키 사용을 지정된 AWS 서비스의 AWS Key Management Service 요청으로 제한합니다.
다음 예제 정책은 kms:ViaService
조건을 사용하여 요청이 해당 ca-central-1
지역의 Step Functions에서 시작된 경우에만 특정 작업에 AWS KMS 키를 사용할 수 있도록 허용하며, 대신 작동합니다. ExampleRole
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow access for Key Administrators in a region", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::1234567890:role/ExampleRole" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "states.ca-central-1.amazonaws.com" } } } ] }
참고
kms:ViaService
조건은 API 호출자에게 AWS KMS 권한이 필요한 경우 (예:, CreateStateMachine
CreateActivity
GetActivityTask
, 등) 에만 적용됩니다. 실행 역할에 kms:ViaService
조건을 추가하면 새 실행이 시작되지 않거나 실행 중인 실행이 실패할 수 있습니다.
API호출자에게 필요한 권한
암호화된 데이터를 반환하는 Step API Functions 액션을 호출하려면 호출자에게 AWS KMS
권한이 필요합니다. 또는 일부 API 액션에는 AWS KMS 권한 요구 사항이 제거되어 메타데이터만 반환하는 옵션 (METADATA_ONLY
) 이 있습니다. 자세한 내용은 Step API Functions를 참조하십시오.
고객 관리형 키 암호화를 사용할 때 실행이 성공적으로 완료되려면 실행 역할을 kms:GenerateDataKey
부여하고 상태 시스템에서 사용하는 AWS KMS 키에 대한 kms:Decrypt
권한을 부여해야 합니다.
다음 표는 Step Functions 스테이트 머신 API 호출자에게 제공하는 데 필요한 AWS KMS 권한을 보여줍니다. 역할에 대한 키 정책 또는 IAM 정책에서 권한을 제공할 수 있습니다.
APIs스테이트 머신의 AWS KMS 키 사용 | 발신자가 요구함 |
CreateStateMachine | kms:DescribeKey, kms: GenerateDataKey |
UpdateStateMachine | kms:, kms: DescribeKey GenerateDataKey |
DescribeStateMachine | kms:Decrypt |
DescribeStateMachineForExecution | kms:Decrypt |
StartExecution | -- |
StartSyncExecution | kms:Decrypt |
SendTaskSuccess | -- |
SendTaskFailure | -- |
StopExecution | -- |
RedriveExecution | -- |
DescribeExecution | kms:Decrypt |
GetExecutionHistory | kms:Decrypt |
다음 표는 Step Functions 활동 API 호출자에게 제공하는 데 필요한 AWS KMS 권한을 보여줍니다. 역할에 대한 키 정책 또는 IAM 정책에서 권한을 제공할 수 있습니다.
APIs액티비티 AWS KMS 키 사용 | 발신자 필수 |
CreateActivity | kms: DescribeKey |
GetActivityTask | kms:Decrypt |
호출자 또는 실행 역할에 언제 권한을 부여하나요?
IAM역할 또는 사용자가 Step API Functions를 호출하면 Step Functions 서비스가 호출자를 AWS KMS 대신하여 API 호출합니다. 이 경우 API 호출자에게 AWS KMS 권한을 부여해야 합니다. 실행 역할이 AWS KMS 직접 호출되는 경우 실행 역할에 대한 AWS KMS 권한을 부여해야 합니다.
AWS CloudFormation 암호화 구성을 위한 리소스
AWS CloudFormation Step Functions의 리소스 유형은 암호화 구성으로 상태 머신 및 액티비티 리소스를 프로비저닝할 수 있습니다.
Step Functions는 기본적으로 투명한 서버 측 암호화를 제공합니다. 두 가지 모두 AWS::StepFunctions::Activity
, 서버 측 암호화를 위한 고객 관리 AWS KMS 키를 구성할 수 있는 선택적 EncryptionConfiguration
속성을 AWS::StepFunctions::StateMachine
수락합니다.
전제 조건: 고객 관리 AWS KMS 키를 사용하여 상태 머신을 생성하려면 먼저 사용자 또는 역할에 및 에 대한 권한이 AWS KMS 있어야 합니다. DescribeKey
GenerateDataKey
StateMachine 업데이트에는 중단이 필요하지 않습니다. 활동 리소스를 업데이트하려면 다음이 필요합니다. 교체.
AWS CloudFormation 템플릿에서 EncryptionConfiguration
속성을 선언하려면 다음 구문을 사용하세요.
JSON
{ "KmsKeyId" : String, "KmsDataKeyReusePeriodSeconds" : Integer, "Type" : String }
YAML
KmsKeyId: String KmsDataKeyReusePeriodSeconds: Integer Type: String
속성
-
유형 - 상태 시스템 또는 활동의 암호화 옵션. 허용된 값:
CUSTOMER_MANAGED_KMS_KEY
|AWS_OWNED_KEY
-
KmsKeyId- 데이터 키를 암호화하는 대칭 암호화 ARN 키의 ARN 별칭, 별칭, AWS KMS 키 ID 또는 키. 다른 AWS 계정의 AWS KMS 키를 지정하려면 고객이 해당 키나 별칭을 사용해야 합니다. ARN ARN 에 대한 kmsKeyId 자세한 내용은 AWS KMS 문서를 참조하십시오 KeyId.
-
KmsDataKeyReusePeriodSeconds- 데이터 키를 재사용할 수 있는 SFN 최대 기간. 기간이 만료되면 Step Functions가
GenerateDataKey
호출됩니다. 이 설정은 Type이CUSTOMER_MANAGED_KMS_KEY
다음과 같은 경우에만 설정할 수 있습니다. 값의 범위는 60-900초일 수 있습니다. 기본값은 300초입니다.
AWS CloudFormation 예시
예: StateMachine 고객 관리 키 사용
AWSTemplateFormatVersion: '2010-09-09' Description: An example template for a Step Functions State Machine. Resources: MyStateMachine: Type: AWS::StepFunctions::StateMachine Properties: StateMachineName: HelloWorld-StateMachine Definition: StartAt: PassState States: PassState: Type: Pass End: true RoleArn: !Sub "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/example" EncryptionConfiguration: KmsKeyId: !Ref MyKmsKey KmsDataKeyReusePeriodSeconds: 100 Type: CUSTOMER_MANAGED_KMS_KEY MyKmsKey: Type: AWS::KMS::Key Properties: Description: Symmetric KMS key used for encryption/decryption
예: 고객 관리 키를 사용한 활동
AWSTemplateFormatVersion: '2010-09-09' Description: An example template for a Step Functions Activity. Resources: Activity: Type: AWS::StepFunctions::Activity Properties: Name: ActivityWithKmsEncryption EncryptionConfiguration: KmsKeyId: !Ref MyKmsKey KmsDataKeyReusePeriodSeconds: 100 Type: CUSTOMER_MANAGED_KMS_KEY MyKmsKey: Type: AWS::KMS::Key Properties: Description: Symmetric KMS key used for encryption/decryption
액티비티의 암호화를 업데이트하려면 새 리소스를 만들어야 합니다.
액티비티 구성은 변경할 수 없으며 리소스 이름은 고유해야 합니다. 암호화를 위한 고객 관리 키를 설정하려면 새 활동을 만들어야 합니다. CFN템플릿에서 기존 활동의 구성을 변경하려고 하면 ActivityAlreadyExists
예외가 발생합니다.
고객 관리 키를 포함하도록 활동을 업데이트하려면 CFN 템플릿 내에 새 활동 이름을 설정하십시오. 다음은 고객 관리 키 구성으로 새 활동을 만드는 예제입니다.
기존 활동 정의
AWSTemplateFormatVersion: '2010-09-09'
Description: An example template for a new Step Functions Activity.
Resources:
Activity:
Type: AWS::StepFunctions::Activity
Properties:
Name: ActivityName
EncryptionConfiguration:
Type: AWS_OWNED_KEY
새 활동 정의
AWSTemplateFormatVersion: '2010-09-09' Description: An example template for a Step Functions Activity. Resources: Activity: Type: AWS::StepFunctions::Activity Properties: Name: ActivityWithKmsEncryption EncryptionConfiguration: KmsKeyId: !Ref MyKmsKey KmsDataKeyReusePeriodSeconds: 100 Type: CUSTOMER_MANAGED_KMS_KEY MyKmsKey: Type: AWS::KMS::Key Properties: Description: Symmetric KMS key used for encryption/decryption
암호화 키 사용 모니터링
AWS KMS 고객 관리 키를 사용하여 Step Functions 리소스를 암호화하는 경우 Step Functions가 보내는 요청을 추적하는 CloudTrail 데 AWS KMS사용할 수 있습니다.
감사 기록 및 로그의 암호화 컨텍스트를 사용하여 고객 관리형 키가 어떻게 사용되고 있는지 파악할 수도 있습니다. 에서 생성한 AWS CloudTrail로그에도 암호화 컨텍스트가 나타납니다.
다음은 고객 관리 키로 암호화된 데이터에 GenerateDataKey
액세스하기 위해 Step Functions에서 호출하는 Decrypt
DescribeKey
, AWS KMS 작업을 모니터링하기 위한 CloudTrail 이벤트입니다.
FAQs
에서 AWS KMS내 키가 삭제 대상으로 표시되거나 삭제되면 어떻게 되나요?
에서 AWS KMS키가 삭제되거나 삭제 대상으로 표시되면 실행 중인 관련 실행이 모두 실패합니다. 워크플로와 관련된 키를 제거하거나 변경할 때까지 새 실행을 시작할 수 없습니다. AWS KMS 키가 삭제되면 워크플로 실행과 관련된 모든 암호화된 데이터는 암호화된 상태로 유지되며 더 이상 해독할 수 없으므로 데이터를 복구할 수 없습니다.
에서 키가 비활성화되면 어떻게 됩니까? AWS KMSAWS KMS
에서 AWS KMS 키가 AWS KMS비활성화되면 관련된 실행 실행이 모두 실패합니다. 새 실행은 시작할 수 없습니다. 비활성화된 AWS KMS 키를 사용하여 암호화된 데이터는 다시 활성화될 때까지 더 이상 해독할 수 없습니다.
로 전송된 실행 상태 변경 이벤트는 어떻게 되나요? EventBridge
고객 관리 AWS KMS 키를 사용하여 암호화된 워크플로의 실행 상태 변경 이벤트에는 실행 입력, 출력, 오류 및 원인이 포함되지 않습니다.
자세히 알아보기
저장 데이터 암호화에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서의AWS Key Management Service 개념 및 보안 모범 사례를 참조하십시오. AWS Key Management Service