選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

Step Functions 中的靜態資料加密

焦點模式
Step Functions 中的靜態資料加密 - AWS Step Functions

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

閱讀部落格

AWS Step Functions 一律使用透明的伺服器端加密來加密靜態資料。根據預設,靜態資料加密可降低保護敏感資料所需的操作開銷和複雜性。您可以建置安全敏感的應用程式,以符合嚴格的加密合規和法規要求。

雖然您無法停用此層加密或選取替代加密類型,但您可以在建立狀態機器和活動資源時選擇客戶受管金鑰,在現有 AWS 擁有的加密金鑰上新增第二層加密:

  • 客戶受管金鑰 — Step Functions 支援使用對稱客戶受管金鑰,您建立、擁有和管理這些金鑰,以透過現有的 AWS 擁有加密新增第二層加密。您可以完全控制此層加密,因此能執行以下任務:

    • 建立和維護金鑰政策

    • 建立和維護 IAM 政策和授予操作

    • 啟用和停用金鑰政策

    • 輪換金鑰密碼編譯資料

    • 新增標籤

    • 建立金鑰別名

    • 安排金鑰供刪除

    如需詳細資訊,請參閱《 AWS Key Management Service 開發人員指南》中的客戶受管金鑰

您可以使用客戶管理的金鑰來加密您的資料,以進行 AWS Step Functions 狀態機器和活動。您可以在建立或更新狀態機器和建立活動時設定對稱 AWS KMS 金鑰和資料金鑰重複使用期間。執行歷史記錄和狀態機器定義將使用套用至狀態機器的金鑰加密。活動輸入將使用套用至活動的金鑰進行加密。

使用客戶受管 AWS KMS 金鑰,您可以保護包含受保護醫療資訊 (PHI) 的客戶資料,避免未經授權的存取。Step Functions 已與 CloudTrail 整合,因此您可以在 CloudTrail 主控台中檢視和稽核事件歷史記錄中的最新事件。

如需詳細資訊 AWS KMS,請參閱什麼是 AWS Key Management Service?

注意

Step Functions 使用 AWS 擁有的金鑰自動啟用靜態加密,無需付費。不過,使用客戶受管金鑰時需 AWS KMS 收取費用。如需定價的詳細資訊,請參閱 AWS Key Management Service 定價。

使用客戶受管金鑰加密

Step Functions 會先使用客戶受管 AWS KMS 金鑰解密承載資料,再將其傳遞給另一個 服務來執行任務。使用 Transport Layer Security (TLS) 在傳輸中加密資料。

從整合服務傳回資料時,Step Functions 會使用客戶受管 AWS KMS 金鑰加密資料。您可以使用相同的金鑰,在許多 AWS 服務中一致地套用加密。

您可以使用客戶受管金鑰搭配下列資源:

  • 狀態機器 - 標準和快速工作流程類型

  • 活動

您可以輸入 KMS 金鑰 ID 來指定資料金鑰,Step Functions 會使用該 ID 來加密您的資料。

  • KMS 金鑰 ID — AWS KMS 以金鑰 ID、金鑰 ARN、別名名稱或別名 ARN 格式的客戶受管金鑰的金鑰識別符

使用客戶受管金鑰建立狀態機器

先決條件:在建立具有客戶受管 AWS KMS 金鑰的狀態機器之前,您的使用者或角色必須具有 DescribeKey和 的 AWS KMS 許可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 整合,用於記錄和監控。當您使用自己的 KMS 金鑰為狀態機器啟用伺服器端加密,並啟用 CloudWatch Log 整合時,您必須允許 從您的 AWS KMS 金鑰政策delivery.logs.amazonaws.com執行kms:Decrypt動作:

{ "Sid": "Enable log service delivery for integrations", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "kms:Decrypt", "Resource": "*" }

如果您使用 AWS KMS 金鑰啟用狀態機器加密,且狀態機器已啟用 CloudWatch Logs 整合,狀態機器的執行角色需要下列政策:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowKMSPermissionForCloudWatchLogGroup", "Effect": "Allow", "Action": "kms:GenerateDataKey", "Resource": "arn:aws:kms:region:accountId:key/keyId", "Condition": { "StringEquals": { "kms:EncryptionContext:SourceArn": "arn:aws:logs:region:accountId:*" } } } ] }

步驟 4:加密 CloudWatch Log Group (選用)

您可以使用自己的 AWS KMS 金鑰來啟用 CloudWatch Log Group 中日誌的加密。若要這麼做,您還必須將下列政策新增至該 AWS KMS 金鑰。

注意

您可以選擇相同或不同的 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。

注意

請參閱 CloudWatch 日誌文件,進一步了解如何設定日誌群組 AWS KMS 金鑰的許可。

步驟 5:建立狀態機器

建立金鑰並設定政策之後,您可以使用金鑰來建立新的狀態機器。

建立狀態機器時,請選擇其他組態,然後選擇使用客戶受管金鑰加密。然後,您可以選取您的金鑰,並將資料金鑰重複使用期間設定為 1 分鐘到 15 分鐘。

或者,您可以設定日誌層級,並選擇使用 AWS KMS 金鑰加密日誌群組,以啟用日誌記錄。

注意

您只能在 Step Functions 主控台中的新日誌群組上啟用加密。若要了解如何將 AWS KMS 金鑰與現有日誌群組建立關聯,請參閱將 AWS KMS 金鑰與日誌群組建立關聯

若要使用客戶受管金鑰成功啟動標準工作流程和非同步 Express 工作流程的執行,您的執行角色需要 kms:Decryptkms:GenerateDataKey 許可。同步快速執行的執行角色需要 kms:Decrypt。當您在主控台中建立狀態機器並選擇建立新角色時,系統會自動為您包含這些許可。

以下是範例執行角色政策:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowKMSPermissionsForStepFunctionsWorkflowExecutions", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:us-east-1:123456789012:key/keyId" ], "Condition": { "StringEquals": { "kms:EncryptionContext:aws:states:stateMachineArn": [ "arn:aws:states:us-east-1:123456789012:stateMachine:stateMachineName" ] } } } ] }

步驟 6:使用 AWS KMS 金鑰叫用加密的狀態機器

您可以像往常一樣叫用加密狀態機器,而您的資料將使用客戶受管金鑰加密。

使用客戶受管金鑰建立活動

使用客戶受管金鑰建立 Step Functions 活動類似於使用客戶受管金鑰建立狀態機器。在建立使用客戶受管 AWS KMS 金鑰的活動之前,您的使用者或角色只需要 的 AWS KMS 許可DescribeKey。在建立活動期間,您可以選擇 金鑰並設定加密組態參數。

請注意,Step Functions 活動資源保持不變。您無法更新現有encryptionConfiguration活動的活動 ARN;您必須建立新的活動資源。活動 API 端點的呼叫者必須具有kms:DescribeKey許可,才能成功建立具有 AWS KMS 金鑰的活動。

在活動任務上啟用客戶受管金鑰加密時,狀態機器執行角色將需要活動金鑰的 kms:GenerateDataKeykms:Decrypt許可。如果您是從 Step Functions 主控台建立此狀態機器,則自動角色建立功能會新增這些許可。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowKMSPermissionsForStepFunctionsActivities", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:us-east-1:123456789012:key/keyId" ], "Condition": { "StringEquals": { "kms:EncryptionContext:aws:states:activityArn": [ "arn:aws:states:us-east-1:123456789012:activity:activityName" ] } } } ] }

使用 條件縮小 AWS KMS 許可政策的範圍

您可以在金鑰政策和 IAM 政策中使用加密內容conditions,以控制對對稱客戶受管金鑰的存取。若要限制對 Step Functions 代表特定角色請求使用 AWS KMS 金鑰,您可以使用 kms:ViaService條件。

使用加密內容進行擴展

加密內容是一組選用的金鑰值對,包含資料的其他相關內容資訊。

AWS KMS 使用加密內容做為額外的已驗證資料,以支援已驗證的加密。當您在加密資料的請求中包含加密內容時, 會將加密內容 AWS KMS 繫結至加密的資料。若要解密資料,您必須在請求中包含相同的加密內容。

Step Functions 在 AWS KMS 密碼編譯操作中提供加密內容,其中 金鑰aws:states:stateMachineArn是用於狀態機器或aws:states:activityArn活動,而 值是資源 Amazon Resource Name (ARN)。

"encryptionContext": {"aws:states:stateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:stateMachineName"}
"encryptionContext": {"aws:states:activityArn": "arn:aws:states:us-east-1:123456789012:activity:activityName"}

下列範例示範如何將執行角色的 AWS KMS 金鑰使用限制為具有 kms:EncryptionContextaws:states:stateMachineArn內容金鑰的特定狀態機器:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow KMS Permissions for StepFunctionsWorkflowExecutions", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:us-east-1:123456789012:key/keyId" ], "Condition": { "StringEquals": { "kms:EncryptionContext:aws:states:stateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:stateMachineName" } } } ] }

使用 kms:ViaService 範圍

kms:ViaService 條件金鑰會將 AWS Key Management Service 金鑰的使用限制為來自指定 AWS 服務的請求。

下列範例政策使用 kms:ViaService條件,僅允許 AWS KMS 在請求源自 ca-central-1區域中的 Step Functions 時,代表 ExampleRole 執行動作時,金鑰用於特定動作:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow access for Key Administrators in a region", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/ExampleRole" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "states.us-east-1.amazonaws.com" } } } ] }
注意

只有在 API 發起人需要 AWS KMS 許可時 (例如 CreateStateMachineCreateActivity、 等)GetActivityTask,此kms:ViaService條件才適用。將kms:ViaService條件新增至執行角色可防止新的執行啟動或導致執行中的執行失敗。

API 呼叫者的必要許可

若要呼叫傳回加密資料的 Step Functions API 動作,呼叫者需要 AWS KMS 許可。或者,某些 API 動作具有僅傳回中繼資料的選項 (METADATA_ONLY),移除 AWS KMS 許可的需求。如需詳細資訊,請參閱 Step Functions API。

若要在使用客戶受管金鑰加密時成功完成執行,需要授予執行角色kms:GenerateDataKey和狀態機器使用的 AWS KMS 金鑰kms:Decrypt許可。

下表顯示使用狀態機器 AWS KMS 金鑰為 API 的 Step Functions APIs 發起人提供所需的 AWS KMS 許可。您可以為角色提供金鑰政策或 IAM 政策的許可。

使用狀態機器金鑰的 AWS KMS APIs 來電者要求
CreateStateMachine kms:DescribeKey, kms:GenerateDataKey
UpdateStateMachine kms:DescribeKey, kms:GenerateDataKey
DescribeStateMachine kms:解密
DescribeStateMachineForExecution kms:解密
StartExecution --
StartSyncExecution kms:解密
SendTaskSuccess --
SendTaskFailure --
StopExecution --
RedriveExecution --
DescribeExecution kms:解密
GetExecutionHistory kms:解密

下表顯示使用 活動 AWS KMS 金鑰為 API 的 Step Functions APIs 發起人提供所需的 AWS KMS 許可。您可以在 角色的金鑰政策或 IAM 政策中提供許可。

使用活動金鑰的 AWS KMS APIs 來電者要求
CreateActivity kms:描述金鑰
GetActivityTask kms:解密
何時將許可授予呼叫者或執行角色?

當 IAM 角色或使用者呼叫 Step Functions API 時,Step Functions 服務 AWS KMS 會代表 API 呼叫者呼叫 。在這種情況下,您必須授予 AWS KMS 許可給 API 發起人。當執行角色 AWS KMS 直接呼叫 時,您必須授予執行角色的 AWS KMS 許可。

AWS CloudFormation 加密組態的資源

AWS CloudFormation Step Functions 的資源類型可以使用加密組態佈建狀態機器和活動資源。

根據預設,Step Functions 提供透明的伺服器端加密。AWS::StepFunctions::Activity 和 都AWS::StepFunctions::StateMachine接受選用EncryptionConfiguration的 屬性,可設定客戶受管 AWS KMS 金鑰以進行伺服器端加密。

先決條件:在建立具有客戶受管 AWS KMS 金鑰的狀態機器之前,您的使用者或角色必須具有 DescribeKey和 的 AWS KMS 許可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 - 加密資料金鑰之對稱加密 AWS KMS 金鑰的別名、別名 ARN、金鑰 ID 或金鑰 ARN。若要在不同的 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 資源時,您可以使用 CloudTrail 追蹤 Step Functions 傳送的請求 AWS KMS。

您也可以在稽核記錄和記錄中使用加密內容,以識別客戶受管金鑰的使用方式。加密內容也會出現在 產生的日誌中AWS CloudTrail

下列範例是 DecryptDescribeKey和 的 CloudTrail 事件GenerateDataKey,用於監控 Step Functions 呼叫 AWS KMS 的操作,以存取客戶受管金鑰加密的資料:

Decrypt

當您存取加密狀態機器或活動時,Step Functions 會呼叫 Decrypt操作,以使用儲存的加密資料金鑰來存取加密的資料。

下面的範例事件會記錄 Decrypt 操作:

{ "eventVersion": "1.09", "userIdentity": { "type": "AssumedRole", "principalId": "111122223333:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "accessKeyId": "ASIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "111122223333:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "userName": "Admin" }, "attributes": { "creationDate": "2024-07-05T21:06:27Z", "mfaAuthenticated": "false" } }, "invokedBy": "states.amazonaws.com" }, "eventTime": "2024-07-05T21:12:21Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "aa-example-1", "sourceIPAddress": "states.amazonaws.com", "userAgent": "states.amazonaws.com", "requestParameters": { "encryptionAlgorithm": "SYMMETRIC_DEFAULT", "keyId": "arn:aws:kms:aa-example-1:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "encryptionContext": { "aws:states:stateMachineArn": "arn:aws:states:aa-example-1:111122223333:stateMachine:example1" } }, "responseElements": null, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:aa-example-1:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }
DescribeKey

Step Functions 使用 DescribeKey操作來驗證與狀態機器或活動相關聯的 AWS KMS 客戶受管金鑰是否存在於帳戶和區域中。

下面的範例事件會記錄 DescribeKey 操作:

{ "eventVersion": "1.09", "userIdentity": { "type": "AssumedRole", "principalId": "111122223333:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "accessKeyId": "ASIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "111122223333:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "userName": "Admin" }, "attributes": { "creationDate": "2024-07-05T21:06:27Z", "mfaAuthenticated": "false" } }, "invokedBy": "states.amazonaws.com" }, "eventTime": "2024-07-05T21:12:21Z", "eventSource": "kms.amazonaws.com", "eventName": "DescribeKey", "awsRegion": "aa-example-1", "sourceIPAddress": "states.amazonaws.com", "userAgent": "states.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:aa-example-1:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" }, "responseElements": null, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:aa-example-1:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management", "sessionCredentialFromConsole": "true" }
GenerateDataKey

當您為狀態機器或活動啟用 AWS KMS 客戶受管金鑰時,Step Functions 會傳送GenerateDataKey請求,以取得加密狀態機器定義或執行資料的資料金鑰。

下面的範例事件會記錄 GenerateDataKey 操作:

{ "eventVersion": "1.09", "userIdentity": { "type": "AssumedRole", "principalId": "111122223333:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "accessKeyId": "ASIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "111122223333:Sampleuser01", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" }, "attributes": { "creationDate": "2024-07-05T21:06:27Z", "mfaAuthenticated": "false" } }, "invokedBy": "states.amazonaws.com" }, "eventTime": "2024-07-05T21:12:21Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "aa-example-1", "sourceIPAddress": "states.amazonaws.com", "userAgent": "states.amazonaws.com", "requestParameters": { "keySpec": "AES_256", "encryptionContext": { "aws:states:stateMachineArn": "arn:aws:states:aa-example-1:111122223333:stateMachine:example1" }, "keyId": "arn:aws:kms:aa-example-1:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" }, "responseElements": null, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:aa-example-1:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }

當您存取加密狀態機器或活動時,Step Functions 會呼叫 Decrypt操作,以使用儲存的加密資料金鑰來存取加密的資料。

下面的範例事件會記錄 Decrypt 操作:

{ "eventVersion": "1.09", "userIdentity": { "type": "AssumedRole", "principalId": "111122223333:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "accessKeyId": "ASIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "111122223333:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "userName": "Admin" }, "attributes": { "creationDate": "2024-07-05T21:06:27Z", "mfaAuthenticated": "false" } }, "invokedBy": "states.amazonaws.com" }, "eventTime": "2024-07-05T21:12:21Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "aa-example-1", "sourceIPAddress": "states.amazonaws.com", "userAgent": "states.amazonaws.com", "requestParameters": { "encryptionAlgorithm": "SYMMETRIC_DEFAULT", "keyId": "arn:aws:kms:aa-example-1:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "encryptionContext": { "aws:states:stateMachineArn": "arn:aws:states:aa-example-1:111122223333:stateMachine:example1" } }, "responseElements": null, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:aa-example-1:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }

常見問答集

如果我的金鑰在 中標記為刪除或刪除,會發生什麼情況 AWS KMS?

如果金鑰已刪除或標記為刪除 AWS KMS,則任何相關的執行執行都會失敗。您必須先移除或變更與工作流程相關聯的金鑰,才能開始新的執行。刪除 AWS KMS 金鑰後,與工作流程執行相關聯的所有加密資料都會保持加密,且無法再解密,使資料無法復原

如果在 中停用 AWS KMS 金鑰,會發生什麼情況 AWS KMS?

如果在 中停用 AWS KMS 金鑰 AWS KMS,則任何相關的執行都會失敗。新的執行無法啟動。在重新啟用之前,您無法再解密在該停用 AWS KMS 金鑰下加密的資料。

傳送至 EventBridge 的執行狀態變更事件會發生什麼情況?

使用客戶受管 AWS KMS 金鑰加密之工作流程的執行狀態變更事件不會包含執行輸入、輸出、錯誤和原因。

進一步了解

如需有關靜態資料加密的資訊,請參閱《 AWS Key Management Service 開發人員指南》中的 的AWS Key Management Service 概念和安全性最佳實務。 AWS Key Management Service

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。