本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
KMS 金鑰 | 建立
請求具有預先定義金鑰政策的 KMS 金鑰。
完整分類:部署 | 進階堆疊元件 | KMS 金鑰 | 建立
變更類型詳細資訊
變更類型 ID |
ct-1d84keiri1jhg |
目前版本 |
1.0 |
預期的執行持續時間 |
60 分鐘 |
AWS 核准 |
必要 |
客戶核准 |
非必要 |
執行模式 |
自動化 |
其他資訊
建立 KMS 金鑰
AMS 主控台中此變更類型的螢幕擷取畫面:
運作方式:
導覽至建立 RFC 頁面:在 AMS 主控台的左側導覽窗格中,按一下 RFCs以開啟 RFCs清單頁面,然後按一下建立 RFC。
在預設瀏覽變更類型檢視中選擇熱門的變更類型 (CT),或在依類別選擇檢視中選擇 CT。
依變更類型瀏覽:您可以在快速建立區域中按一下熱門的 CT,以立即開啟執行 RFC 頁面。請注意,您無法透過快速建立選擇較舊的 CT 版本。
若要排序 CTs,請使用卡片或資料表檢視中的所有變更類型區域。在任一檢視中,選取 CT,然後按一下建立 RFC 以開啟執行 RFC 頁面。如果適用,建立較舊版本選項會顯示在建立 RFC 按鈕旁。
依類別選擇:選取類別、子類別、項目和操作,如果適用,CT 詳細資訊方塊會開啟,其中包含使用較舊版本建立的選項。按一下建立 RFC 以開啟執行 RFC 頁面。
在執行 RFC 頁面上,開啟 CT 名稱區域以查看 CT 詳細資訊方塊。需要主旨 (如果您在瀏覽變更類型檢視中選擇 CT,則會為您填入)。開啟其他組態區域以新增 RFC 的相關資訊。
在執行組態區域中,使用可用的下拉式清單或輸入必要參數的值。若要設定選用的執行參數,請開啟其他組態區域。
完成後,請按一下執行。如果沒有錯誤,RFC 成功建立的頁面會顯示已提交的 RFC 詳細資訊,以及初始的執行輸出。
開啟執行參數區域以查看您提交的組態。重新整理頁面以更新 RFC 執行狀態。或者,取消 RFC 或使用頁面頂端的選項建立 RFC 的副本。
運作方式:
使用內嵌建立 (您發出包含所有 RFC 和執行參數的
create-rfc命令) 或範本建立 (您建立兩個 JSON 檔案,一個用於 RFC 參數,另一個用於執行參數),並使用兩個檔案作為輸入發出create-rfc命令。此處說明這兩種方法。使用傳回的 RFC ID 提交 RFC:
aws amscm submit-rfc --rfc-id命令。ID監控 RFC:
aws amscm get-rfc --rfc-id命令。ID
若要檢查變更類型版本,請使用下列命令:
aws amscm list-change-type-version-summaries --filter Attribute=ChangeTypeId,Value=CT_ID
注意
您可以將任何CreateRfc參數與任何 RFC 搭配使用,無論它們是否為變更類型結構描述的一部分。例如,若要在 RFC 狀態變更時取得通知,請將此行新增至請求的 --notification "{\"Email\": {\"EmailRecipients\" : [\"email@example.com\"]}}" RFC 參數部分 (而非執行參數)。如需所有 CreateRfc 參數的清單,請參閱 AMS 變更管理 API 參考。
內嵌建立:
使用內嵌提供的執行參數發出建立 RFC 命令 (在內嵌提供執行參數時逸出引號),然後提交傳回的 RFC ID。例如,您可以將內容取代為如下內容:
僅限必要參數:
aws amscm create-rfc --titlemy-app-key--change-type-id ct-1d84keiri1jhg --change-type-version1.0--execution-parameters '{"Description":"KMS key for my-app","VpcId":"VPC_ID","Name":"my-app-key","StackTemplateId":"stm-enf1j068fhg34vugt","TimeoutInMinutes":60,"Parameters":{"Description":"KMS key for my-app"}}'
範本建立:
將此變更類型的執行參數 JSON 結構描述輸出至檔案;此範例將其命名為 CreateKmsKeyAutoParams.json.
aws amscm get-change-type-version --change-type-id "ct-1d84keiri1jhg" --query "ChangeTypeVersion.ExecutionInputSchema" --output text > CreateKmsKeyAutoParams.json修改並儲存 CreateKmsKeyAutoParams 檔案。範例如下。
授予使用者或角色解密所建立 CMK 的許可。範例執行參數:
{ "Description": "KMS key for my-app", "VpcId": "VPC_ID”, "Name": "my-app-key-decrypt", "StackTemplateId": "stm-enf1j068fhg34vugt", "TimeoutInMinutes": 60, "Parameters": { "IAMPrincipalsRequiringDecryptPermissions": [ "ARN:role/roleA", "ARN:user/userB", "ARN:role/instanceProfileA" ], "Description": "KMS key for my-app" } }如需產生的政策,請參閱 准許使用 IAM 使用者或角色的 CML 進行解密。
授予使用者或角色使用建立的 CMK 加密的許可。範例執行參數:
{ "Description": "KMS key for my-app", "VpcId": "VPC_ID", "Name": "my-app-key-encrypt", "Tags": [ { "Key": "Name", "Value": "my-app-key" } ], "StackTemplateId": "stm-enf1j068fhg34vugt", "TimeoutInMinutes": 60, "Parameters": { "IAMPrincipalsRequiringEncryptPermissions": [ "ARN:role/roleA", "ARN:user/userB", "ARN:role/instanceProfileA" ], "Description": "KMS key for my-app" } }如需產生的政策,請參閱 准許使用 IAM 使用者或角色的 CML 加密。
授予使用者、角色或帳戶使用建立的 CMK 建立授予的許可。範例執行參數:
{ "Description": "KMS key for my-app", "VpcId": "VPC_ID", "Name": "my-app-key-create-grants", "StackTemplateId": "stm-enf1j068fhg34vugt", "TimeoutInMinutes": 60, "Parameters": { "IAMPrincipalsRequiringGrantsPermissions": [ "arn:aws:iam::999999999999:role/roleA", "888888888888" ], "Description": "KMS key for my-app" } }如需產生的政策,請參閱 准許使用 IAM 使用者、角色或帳戶的 CMK 建立授權。
僅允許與 AWS KMS 整合的 AWS 服務執行 GRANT 操作。範例執行參數:
{ "Description": "KMS key for my-app", "VpcId": "VPC_ID", "Name": "my-app-key-limit-to-services", "StackTemplateId": "stm-enf1j068fhg34vugt", "TimeoutInMinutes": 60, "Parameters": { "IAMPrincipalsRequiringGrantsPermissions": [ "arn:aws:iam::999999999999:role/roleA" ], "LimitGrantsToAWSResources": "true", "Description": "KMS key for my-app" } }如需產生的政策,請參閱 僅允許與 AWS KMS 整合的 AWS 服務執行 GRANT 操作。
在密碼編譯操作中強制使用加密內容金鑰。範例執行參數:
{ "Description": "KMS key for my-app", "VpcId": "VPC_ID", "Name": "my-app-key-encryption-keys", "StackTemplateId": "stm-enf1j068fhg34vugt", "TimeoutInMinutes": 60, "Parameters": { "EnforceEncryptionContextKeys": "true", "Description": "KMS key for my-app" } }如需產生的政策,請參閱 在密碼編譯操作中強制使用加密內容金鑰。
在密碼編譯操作中強制執行加密內容金鑰的特定清單。範例執行參數:
{ "Description": "KMS key for my-app", "VpcId": "VPC_ID", "Name": "my-app-key-encryption-list", "StackTemplateId": "stm-enf1j068fhg34vugt", "TimeoutInMinutes": 60, "Parameters": { "AllowedEncryptionContextKeys": [ "Name", "Application" ], "Description": "KMS key for my-app" } }如需產生的政策,請參閱 在密碼編譯操作中強制執行加密內容金鑰的特定清單。
允許 AWS 服務存取建立的 CMK。範例執行參數:
{ "Description" : "KMS key for my-app", "VpcId" : "VPC_ID", "Name" : "my-app-key-allow-aws-service-access", "StackTemplateId" : "stm-enf1j068fhg34vugt", "TimeoutInMinutes" : 60, "Parameters" : { "AllowServiceRolesAccessKMSKeys": [ "ec2.us-east-1.amazonaws.com", "ecr.us-east-1.amazonaws.com" ], "Description": "KMS key for my-app" } }如需產生的政策,請參閱 允許 AWS 服務存取建立的 CMK。
將 RFC 範本 JSON 檔案輸出至檔案;此範例會將其命名為 CreateKmsKeyAutoRfc.json:
aws amscm create-rfc --generate-cli-skeleton > CreateKmsKeyAutoRfc.json修改並儲存 CreateKmsKeyAutoRfc.json 檔案。例如,您可以將內容取代為如下內容:
{ "ChangeTypeId": "ct-1d84keiri1jhg", "ChangeTypeVersion": "1.0", "Title": "Create KMS Key" }建立 RFC,指定 CreateKmsKeyAuto Rfc 檔案和 CreateKmsKeyAutoParams 檔案:
aws amscm create-rfc --cli-input-json file://CreateKmsKeyAutoRfc.json --execution-parameters file://CreateKmsKeyAutoParams.json您會在回應中收到新 RFC 的 ID,並使用它來提交和監控 RFC。在您提交之前,RFC 會保持在編輯狀態,不會啟動。
-
此 CT 會建立 CloudFormation 堆疊,以使用 建立 KMS 金鑰
DeletionPolicy: Retain。根據設計,即使您刪除堆疊,建立的 KMS 金鑰仍會保留。如果您確定要刪除 KMS 金鑰,請建立變更類型為 ct-2zxya20wmf5bf 的 RFC,管理 | 進階堆疊元件 | KMS 金鑰 | 刪除 (需要檢閱)。 此變更類型為 ExecutionMode=Automated,因此此變更類型不需要 AMS 操作手動檢閱,而且執行速度應該比 KMS Key: Create (需要檢閱) 更快;不過,如果您遇到異常情況,手動版本可能更適合您。請參閱 KMS 金鑰 | 建立 (需要檢閱)。
此 CT 有新的參數 AllowServiceRolesAccessKMSKeys,可提供 KMS 金鑰的指定 AWS 服務存取權。由於缺少 KMS 金鑰的許可,Autoscaling 群組服務角色無法使用加密的 EBS 磁碟區啟動 EC2 執行個體,因此進行了變更。
若要進一步了解 AWS KMS 金鑰,請參閱 AWS Key Management Service (KMS)
、AWS Key Management Service FAQs 和 AWS Key Management Service 概念。
KMS 金鑰 建立產生的政策
根據您建立 KMS 金鑰的方式,您已建立 政策。這些範例政策符合 中提供的各種 KMS 金鑰建立案例建立 KMS 金鑰。
准許使用 IAM 使用者或角色的 CML 進行解密
產生的範例政策會授予 IAM 使用者、角色或執行個體描述檔使用 CMK 解密的許可:
{ "Sid": "Allow decrypt using the key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::999999999999:role/roleA", "arn:aws:iam::999999999999:user/userB", "arn:aws:iam::999999999999:role/instanceProfileA" ] }, "Action": [ "kms:DescribeKey", "kms:Decrypt" ], "Resource": "*" }
如需使用 KMS 金鑰建立變更類型建立此政策的執行參數,請參閱 建立 KMS 金鑰
准許使用 IAM 使用者或角色的 CML 加密
產生的範例政策會授予 IAM 使用者、角色或執行個體描述檔使用 CMK 加密的許可:
{ "Sid": "Allow encrypt using the key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::999999999999:role/roleA", "arn:aws:iam::999999999999:user/userB", "arn:aws:iam::999999999999:role/instanceProfileA" ] }, "Action": [ "kms:DescribeKey", "kms:Encrypt", "kms:ReEncrypt*", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext" ], "Resource": "*" }
如需使用 KMS 金鑰建立變更類型建立此政策的執行參數,請參閱 建立 KMS 金鑰
准許使用 IAM 使用者、角色或帳戶的 CMK 建立授權
產生的範例政策:
{ "Sid": "Allow grants", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::999999999999:role/roleA", "arn:aws:iam::888888888888:root" ] }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*" }
如需使用 KMS 金鑰建立變更類型建立此政策的執行參數,請參閱 建立 KMS 金鑰
僅允許與 AWS KMS 整合的 AWS 服務執行 GRANT 操作
產生的範例政策:
{ "Sid": "Allow grants", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::999999999999:role/roleA" }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*" }, { "Sid": "Deny if grant is not for AWS resource", "Effect": "Deny", "Principal": { "AWS": "*" }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": "false" } } } } }
如需使用 KMS 金鑰建立變更類型建立此政策的執行參數,請參閱 建立 KMS 金鑰
在密碼編譯操作中強制使用加密內容金鑰
產生的範例政策:
{ "Effect": "Deny", "Principal": { "AWS": "*" }, "Action": [ "kms:CreateGrant", "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey*", "kms:ReEncrypt" ], "Resource": "*", "Condition": { "Null": { "kms:EncryptionContextKeys": "true" } } }
如需使用 KMS 金鑰建立變更類型建立此政策的執行參數,請參閱 建立 KMS 金鑰
在密碼編譯操作中強制執行加密內容金鑰的特定清單
產生的範例政策:
{ "Effect": "Deny", "Principal": { "AWS": "*" }, "Action": [ "kms:CreateGrant", "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey*", "kms:ReEncrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContextKeys": [ "Name", "Application" ] } } }
如需使用 KMS 金鑰建立變更類型建立此政策的執行參數,請參閱 建立 KMS 金鑰
允許 AWS 服務存取建立的 CMK
產生的範例政策:
{ "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "kms:ListGrants", "kms:CreateGrant", "kms:DescribeKey", "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "ec2.us-west-2.amazonaws.com", "ecr.us-east-1.amazonaws.com" ], "kms:CallerAccount": "111122223333" } } }
如需使用 KMS 金鑰建立變更類型建立此政策的執行參數,請參閱 建立 KMS 金鑰
執行輸入參數
如需執行輸入參數的詳細資訊,請參閱 變更類型的結構描述 ct-1d84keiri1jhg。
範例:必要參數
{ "Description" : "Test description", "VpcId" : "vpc-12345678901234567", "Name" : "TestStack", "StackTemplateId" : "stm-enf1j068fhg34vugt", "TimeoutInMinutes" : 60, "Parameters" : { "Description" : "Test key" } }
範例:所有參數
{ "Description" : "Test description", "VpcId" : "vpc-12345678", "Name" : "TestStack", "Tags" : [ { "Key" : "foo", "Value" : "bar" } ], "StackTemplateId" : "stm-enf1j068fhg34vugt", "TimeoutInMinutes" : 60, "Parameters" : { "Alias" : "testkey", "EnableKeyRotation" : "true", "Description" : "Test key", "PendingWindow" : 30, "IAMPrincipalsRequiringDecryptPermissions" : [ "arn:aws:iam::123456789012:user/myuser", "arn:aws:iam::123456789012:role/myrole" ], "IAMPrincipalsRequiringEncryptPermissions" : [ "arn:aws:iam::123456789012:user/myuser", "arn:aws:iam::123456789012:role/myrole" ], "IAMPrincipalsRequiringGrantsPermissions" : [ "arn:aws:iam::123456789012:user/myuser", "arn:aws:iam::123456789012:role/myrole", "987654321098" ], "LimitGrantsToAWSResources" : "true", "EnforceEncryptionContextKeys" : "true", "AllowedEncryptionContextKeys" : [ "App" ], "AllowServiceRolesAccessKMSKeys": [ "ec2.us-east-1.amazonaws.com" ] } }