AWS KMS 條件鍵 - AWS Key Management Service

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

AWS KMS 條件鍵

AWS KMS 提供一組條件金鑰,供您在金鑰政策和 IAM 政策中使用。這些條件索引鍵是特定於 AWS KMS。例如,在控制對稱加密 KMS 金鑰的存取權時,您可以使用 kms:EncryptionContext:context-key 條件金鑰來要求特定的加密內容

API 操作請求的條件

許多 AWS KMS 條件金鑰會根據作業要求中的參數值來控制 KMS 金鑰的存 AWS KMS 取。例如,您可以在 IAM 政策中使用 kms: KeySpec 條件金鑰,只有在CreateKey請求中的KeySpec參數值為時,才允許使用該CreateKey作業RSA_4096

即使請求中未出現參數 (例如使用參數的預設值時),這種類型的條件仍會發生作用。例如SYMMETRIC_DEFAULT,您可以使用 kms: KeySpec 條件索引鍵,讓使用者只能在KeySpec參數值為 (預設值) 時使用此CreateKey作業。此條件允許 KeySpec 參數值為 SYMMETRIC_DEFAULT 的請求,以及沒有 KeySpec 參數的請求。

在 API 操作中使用 KMS 金鑰需滿足的條件

某些 AWS KMS 條件金鑰可以根據作業中使用的 KMS 金鑰屬性來控制作業的存取。例如,您可以使用 kms: KeyOrigin 條件,允許主體只有GenerateDataKey在 KMS 金鑰為時才呼叫 KMS 金鑰。Origin AWS_KMS若要確定可否以這種方式使用條件金鑰,請參閱條件金鑰的描述。

操作必須是 KMS 金鑰資源操作,也就是授權特定 KMS 金鑰的操作。若要識別 KMS 金鑰資源操作,請在動作與資源表中尋找操作之 Resources 資料欄的 KMS key 值。如果您將此類型的條件金鑰用於未授權特定 KMS 金鑰資源的作業 (例如) ListKeys,則權限無效,因為無法滿足條件。授權 ListKeys 操作中沒有相關的 KMS 金鑰資源,也沒有 KeySpec 屬性。

下列主題說明每個 AWS KMS 條件索引鍵,並包含示範原則語法的範例原則陳述式。

使用帶有條件索引鍵的集合運算子

當原則條件比較兩組值 (例如要求中的標籤集和原則中的標籤集) 時,您需要告訴 AWS 如何比較這些集合。IAM 為此定義了兩個集合的運算子,ForAnyValueForAllValues。使用僅具有所需多重值條件索引鍵的集合運算子。請勿將集合運算子與單一值條件索引鍵搭配使用。如往常一樣,在生產環境中使用之前,完整測試您的政策陳述式。

條件索引鍵是單一值或多重值。若要判斷 AWS KMS 條件索引鍵是單值還是多值,請參閱條件索引鍵描述中的「值類型」欄。

  • 單一值條件索引鍵在授權內容 (請求或資源) 中最多有一個值。例如,由於每個 API 呼叫只能源自一個 AWS 帳戶,因此 kms: CallerAccount 是單一值的條件金鑰。請勿使用具有單一值條件索引鍵的集合運算子。

  • 單一值條件索引鍵在授權內容 (請求或資源) 中有多個值。例如,由於每個 KMS 金鑰可以有多個別名,因此 kms: ResourceAliases 可以有多個值。多重值條件索引鍵需要集合運算子。

請注意,單一值和多重值條件索引鍵之間的差異取決於授權內容中值的數目;而非政策條件中值的數目。

警告

將集合運算子搭配單一值條件索引鍵使用,可以建立過度寬鬆 (或過度限制) 的政策陳述式。只能將集合運算子與多值條件索引鍵搭配使用。

如果您使用 kms:: 內容索引鍵或aws:RequestTag/tag-key條件索引鍵建立或更新包含 ForAllValues set 運算子的原則,則會 AWS KMS 傳回下列錯誤訊息EncryptionContext:

OverlyPermissiveCondition: Using the ForAllValues set operator with a single-valued condition key matches requests without the specified [encryption context or tag] or with an unspecified [encryption context or tag]. To fix, remove ForAllValues.

如需 ForAnyValueForAllValues 集合運算子的詳細資訊,請參閱《IAM 使用者指南》中的使用多個金鑰和值。如需將ForAllValues集合運算子搭配單值條件使用風險的相關資訊,請參閱 IAM 使用者指南 ForAllValues 含有單一值金鑰的安全性警告

公里:BypassPolicyLockoutSafetyCheck

AWS KMS 條件鍵 條件類型 值類型 API 操作 Policy type (政策類型)

kms:BypassPolicyLockoutSafetyCheck

Boolean

單一值

CreateKey

PutKeyPolicy

僅限 IAM 政策

金鑰政策和 IAM 政策

kms:BypassPolicyLockoutSafetyCheck條件索引鍵會根據要求中的BypassPolicyLockoutSafetyCheck參數值來控制CreateKeyPutKeyPolicy作業的存取。

以下範例 IAM 政策陳述式在 CreateKey 請求中的 BypassPolicyLockoutSafetyCheck 參數值是 true. 時,拒絕使用者建立 KMS 金鑰的許可,來防止使用者繞過政策鎖定安全檢查。

{ "Effect": "Deny", "Action": [ "kms:CreateKey", "kms:PutKeyPolicy" ], "Resource": "*", "Condition": { "Bool": { "kms:BypassPolicyLockoutSafetyCheck": true } } }

您也可以在 IAM 政策或金鑰政策中使用 kms:BypassPolicyLockoutSafetyCheck 條件索引鍵,以控制對 PutKeyPolicy 操作的存取。來自金鑰政策的以下範例政策陳述式防止使用者在變更 KMS 金鑰的政策時繞過政策鎖定安全檢查。

除了使用明確 Deny,此政策陳述式使用 Allow 搭配 Null 條件運算子,只在請求不包含 BypassPolicyLockoutSafetyCheck 參數時才允許存取。不使用參數時,預設值為 false。在極少數需要繞過的情況下,您可以覆寫這個比較弱的政策陳述式。

{ "Effect": "Allow", "Action": "kms:PutKeyPolicy", "Resource": "*", "Condition": { "Null": { "kms:BypassPolicyLockoutSafetyCheck": true } } }

另請參閱

公里:CallerAccount

AWS KMS 條件鍵 條件類型 值類型 API 操作 Policy type (政策類型)

kms:CallerAccount

字串

單一值

KMS 金鑰資源操作

自訂金鑰存放操作

金鑰政策和 IAM 政策

您可以使用此條件索引鍵,來允許或拒絕 AWS 帳戶中所有身分 (使用者和角色) 的存取。在金鑰政策中,您可以使用 Principal 元素來指定政策陳述式套用的身分。Principal 元素的語法不提供用來指定 AWS 帳戶中所有身分的方式。但是,您可以通過將此條件鍵與指定所有 AWS 身份的Principal元素結合起來實現此效果。

您可以使用它來控制對任何 KMS 金鑰資源作業的存取,也就是使用特定 KMS 金鑰的任何 AWS KMS 作業。若要識別 KMS 金鑰資源操作,請在動作與資源表中尋找操作之 Resources 資料欄的 KMS key 值。其也適用於管理自訂金鑰存放的操作。

例如,以下金鑰政策陳述式示範了如何使用 kms:CallerAccount 條件索引鍵。此政策聲明列於適用於 Amazon EBS AWS 受管金鑰 的金鑰政策中。它將指定所有 AWS 身分識別的Principal元素與kms:CallerAccount條件索引鍵結合在一起,以便有效地允許存取 AWS 帳戶 111122223333 中的所有身分識別。它包含一個額外的 AWS KMS 條件金鑰 (kms:ViaService),可透過僅允許透過 Amazon EBS 傳送的請求來進一步限制許可。如需詳細資訊,請參閱 公里:ViaService

{ "Sid": "Allow access through EBS for all principals in the account that are authorized to use EBS", "Effect": "Allow", "Principal": {"AWS": "*"}, "Condition": { "StringEquals": { "kms:CallerAccount": "111122223333", "kms:ViaService": "ec2.us-west-2.amazonaws.com" } }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "*" }

公里:CustomerMasterKeySpec(已棄用)

kms:CustomerMasterKeySpec 條件索引鍵已被取代。而是使用 kms: KeySpec 條件金鑰。

kms:CustomerMasterKeySpeckms:KeySpec 條件索引鍵的運作方式相同。只有名稱不同。建議您使用 kms:KeySpec。但是,為了避免中斷更改, AWS KMS 支持兩個條件鍵。

公里:CustomerMasterKeyUsage(已棄用)

kms:CustomerMasterKeyUsage 條件索引鍵已被取代。而是使用 kms: KeyUsage 條件金鑰。

kms:CustomerMasterKeyUsagekms:KeyUsage 條件索引鍵的運作方式相同。只有名稱不同。建議您使用 kms:KeyUsage。但是,為了避免中斷更改, AWS KMS 支持兩個條件鍵。

公里:DataKeyPairSpec

AWS KMS 條件鍵 條件類型 值類型 API 操作 Policy type (政策類型)

kms:DataKeyPairSpec

字串

單一值

GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

金鑰政策和 IAM 政策

您可以使用此條件鍵,根據請求中的KeyPairSpec參數值來控制對GenerateDataKeyPairGenerateDataKeyPairWithoutPlaintext作業的存取。例如,您可以允許使用者產生僅限特定類型的資料金鑰對。

下列範例金鑰政策陳述式使用 kms:DataKeyPairSpec 條件索引鍵,允許使用者使用 KMS 金鑰只產生 RSA 資料金鑰對。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:GenerateDataKeyPair", "kms:GenerateDataKeyPairWithoutPlaintext" ], "Resource": "*", "Condition": { "StringLike": { "kms:DataKeyPairSpec": "RSA*" } } }

另請參閱

公里:EncryptionAlgorithm

AWS KMS 條件鍵 條件類型 值類型 API 操作 Policy type (政策類型)

kms:EncryptionAlgorithm

字串

單一值

Decrypt

Encrypt

GenerateDataKey

GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

GenerateDataKeyWithoutPlaintext

ReEncrypt

金鑰政策和 IAM 政策

您可以使用 kms:EncryptionAlgorithm 條件金鑰,根據操作中使用的加密演算法控制對密碼編譯操作的存取。對於「」、「解密」和ReEncrypt作業,它會根據要求中的EncryptionAlgorithm參數值來控制存取。對於產生資料金鑰和資料金鑰對的操作,根據加密資料金鑰所用之加密演算法控制存取。

此條件金鑰不會影響以外執行的作業 AWS KMS,例如使用非對稱 KMS 金鑰組中的公開金 key pair 加密。 AWS KMS

EncryptionAlgorithm 請求中的參數

若要允許使用者只使用特定加密演算法搭配 KMS 金鑰,請使用具有 Deny 效果的政策陳述式和 StringNotEquals 條件運算子。例如,下列範例金鑰政策陳述式禁止擔任 ExampleRole 角色的主體在指定的密碼編譯操作中使用此 KMS 金鑰,除非請求中的加密演算法是 RSAES_OAEP_SHA_256 (即與 RSA KMS 金鑰搭配使用的非對稱加密演算法)。

與允許使用者使用特定加密演算法的政策陳述式不同,具有像這樣的雙負數的政策陳述式可防止此 KMS 金鑰的其他政策和授權讓此角色使用其他加密演算法。此金鑰政策陳述式中的 Deny 優先於任何金鑰政策或具有 Allow 效果的 IAM 政策,也優先於此 KMS 金鑰及其主體的所有授權。

{ "Sid": "Allow only one encryption algorithm with this asymmetric KMS key", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*" ], "Resource": "*", "Condition": { "StringNotEquals": { "kms:EncryptionAlgorithm": "RSAES_OAEP_SHA_256" } } }

用於操作的加密演算法

您也可以使用 kms:EncryptionAlgorithm 條件索引鍵,即使在請求中未指定演算法,也可根據操作中使用的加密演算法來控制對操作的存取。這可讓您需要或禁止 SYMMETRIC_DEFAULT 演算法,這可能不會在請求中指定,因為其是預設值。

此功能能讓您使用 kms:EncryptionAlgorithm 條件索引鍵控制對產生資料金鑰和資料金鑰對之操作的存取。這些操作只使用對稱加密 KMS 金鑰和 SYMMETRIC_DEFAULT 演算法。

例如,此 IAM 政策會將其主體限制在對稱加密。除非請求中指定或操作中使用的加密演算法是 SYMMETRIC_DEFAULT,否則拒絕存取範例帳戶中密碼編譯操作的任何 KMS 金鑰。包括GenerateDataKey*添加GenerateDataKeyGenerateDataKeyWithoutPlaintextGenerateDataKeyPair、、和GenerateDataKeyPairWithoutPlaintext權限。條件對這些操作沒有影響,因為其一律使用對稱式加密演算法。

{ "Sid": "AllowOnlySymmetricAlgorithm", "Effect": "Deny", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/*", "Condition": { "StringNotEquals": { "kms:EncryptionAlgorithm": "SYMMETRIC_DEFAULT" } } }

另請參閱

公里:EncryptionContext: 上下文鍵

AWS KMS 條件鍵 條件類型 值類型 API 操作 Policy type (政策類型)

kms:EncryptionContext:context-key

字串

單一值

CreateGrant

Encrypt

Decrypt

GenerateDataKey

GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

GenerateDataKeyWithoutPlaintext

ReEncrypt

RetireGrant

金鑰政策和 IAM 政策

您可以使用 kms:EncryptionContext:context-key 條件金鑰,依據密碼編譯操作請求中的加密內容,控制對對稱加密 KMS 金鑰的存取。使用此條件索引鍵可同時評估加密內容對中的金鑰和值。若只要評估加密內容金鑰,或不論金鑰或值為何,都需要加密內容,請使用 kms: EncryptionContextKeys 條件金鑰。

注意

條件金鑰值必須符合金鑰政策和 IAM 政策的字元規則。某些在加密內容中有效的字元在政策中無效。您可能無法使用此條件金鑰來表示所有的有效加密內容值。如需有關金鑰政策文件規則的詳細資訊,請參閱金鑰政策格式。如需有關 IAM 政策文件規則的詳細資訊,請參閱《IAM 使用者指南》中的 IAM 名稱需求

您不能使用非對稱 KMS 金鑰HMAC KMS 金鑰在密碼編譯操作中指定加密內容。非對稱演算法和 MAC 演算法不支援加密內容。

若要使用 kms:EncryptionContext: 內容金鑰條件金鑰,請將內容金鑰預留位置取代為加密內容金鑰。將 context-value 預留位置取代為加密內容值。

"kms:EncryptionContext:context-key": "context-value"

例如,以下條件索引鍵指定加密內容,其中金鑰是 AppName,值是 ExampleApp (AppName = ExampleApp)。

"kms:EncryptionContext:AppName": "ExampleApp"

這是單一值條件索引鍵。條件索引鍵中的金鑰會指定特定的加密內容索引鍵 (context-key)。雖然您可以在每個 API 請求中包含多個加密內容對,但是與指定 context-key 對的加密內容只能有一個值。例如,kms:EncryptionContext:Department 條件索引鍵僅適用於與 Department 金鑰對的加密內容,以及任何與 Department 金鑰對的指定加密內容只能有一個值。

請勿將集合運算子與 kms:EncryptionContext:context-key 條件索引鍵搭配使用。如果您建立的政策陳述式包含 Allow 動作、kms:EncryptionContext:context-key 條件索引鍵和 ForAllValues 集合運算子,則條件會允許沒有加密內容的請求,以及未在政策條件中指定的加密內容對的請求。

警告

請勿將 ForAnyValueForAllValues 集合運算子與此單一值條件索引鍵搭配使用。這些集合運算子可以建立不需要您想要要求之值的政策條件,並允許您想要禁止的值。

如果您使用 kms:: 內容索引鍵建立或更新包含 ForAllValues set 運算子的原則,則會 AWS KMS 傳回下列錯誤訊息EncryptionContext:

OverlyPermissiveCondition:EncryptionContext: Using the ForAllValues set operator with a single-valued condition key matches requests without the specified encryption context or with an unspecified encryption context. To fix, remove ForAllValues.

若要要求特定的加密內容對,請將 kms:EncryptionContext:context-key 條件索引鍵與 StringEquals 運算子搭配使用。

以下範例金鑰政策陳述式,僅當請求中的加密內容包含 AppName:ExampleApp 對時,才允許可以擔任角色的主體使用 GenerateDataKey 請求中的 KMS 金鑰。允許其他加密內容對。

金鑰名稱不會區分大小寫。值是否區分大小寫,取決於條件運算子,例如 StringEquals。如需詳細資訊,請參閱 加密內容條件需區分大小寫

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp" } } }

若要要求加密內容配對並禁止所有其他加密內容配對,請同時使用 kms:EncryptionContext: 內容金鑰和原則陳述kms:EncryptionContextKeys式。以下範例政策陳述式使用 kms:EncryptionContext:AppName 條件索引鍵,要求請求中有 AppName=ExampleApp 加密內容對。它還會將 kms:EncryptionContextKeys 條件索引鍵與 ForAllValues 集合運算子搭配使用,以僅允許 AppName 加密內容索引鍵。

ForAllValues 集合運算子將請求中的加密內容索引鍵限制為 AppName。如果具有 ForAllValues 集合運算子的 kms:EncryptionContextKeys 條件在政策陳述式中單獨使用,則此集合運算子會允許沒有加密內容的請求。不過,如果請求沒有加密內容,則 kms:EncryptionContext:AppName 條件將會失敗。如需 ForAllValues 集合運算子的詳細資訊,請參閱《IAM 使用者指南》中的使用多個索引鍵和值

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/KeyUsers" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp" }, "ForAllValues:StringEquals": { "kms:EncryptionContextKeys": [ "AppName" ] } } }

您也可以使用此條件索引鍵來拒絕存取特定操作的 KMS 金鑰。以下範例金鑰政策陳述式使用 Deny 效果,在請求中加密內容包含 Stage=Restricted 加密內容對的情形下,禁止主體使用 KMS 金鑰。此條件允許使用其他加密內容對的請求,包括具有 Stage 金鑰和其他值的加密內容對,例如 Stage=Test

{ "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Stage": "Restricted" } } }

使用多個加密內容對

您可以要求或禁止多個加密內容對。您也可以要求其中一個加密內容對。如需用來解譯這些條件之邏輯的詳細資訊,請參閱《IAM 使用者指南》中的建立具有多個索引鍵或值的條件

注意

本主題的舊版顯示使用ForAnyValueForAllValues設定運算子搭配 kms:EncryptionContext: 內容索引鍵條件金鑰的原則陳述式。使用具有單一值條件索引鍵的集合運算子可能會導致政策允許沒有加密內容和未指定加密內容對的請求。

例如,政策條件具有 Allow 效果、ForAllValues 集合運算子和 "kms:EncryptionContext:Department": "IT" 條件索引鍵不會將加密內容限制為 "Department=IT" 對。它允許沒有加密內容的請求和未指定加密內容對的請求,例如 Stage=Restricted

請檢閱您的政策,並使用 kms:EncryptionContext: 上下文鍵從任何條件中消除 set 運算子。嘗試使用此格式建立或更新政策會失敗,OverlyPermissiveCondition 為例外狀況。若要解決錯誤,請刪除集合運算子。

若要要求多個加密內容對,請以相同的條件列出對。以下範例金鑰政策陳述式需要兩個加密內容對,Department=ITProject=Alpha。因為條件有不同的索引鍵 (kms:EncryptionContext:Departmentkms:EncryptionContext:Project),所以它們由 AND 運算子隱式連線。允許其他加密內容對,但不是必需的。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Department": "IT", "kms:EncryptionContext:Project": "Alpha" } } }

若需要一個加密內容對 OR 另一個對,請將每個條件索引鍵放在個別的政策陳述式中。以下範例金鑰政策需要 Department=IT Project=Alpha 對,或兩者。允許其他加密內容對,但不是必需的。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Department": "IT" } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Project": "Alpha" } } }

若要需要特定的加密配對並排除所有其他加密內容配對,請同時使用 kmsEncryptionContext:: 內容金鑰和原則陳述kms:EncryptionContextKeys式。下列金鑰原則陳述式會使用 kms:EncryptionContext: 內容金鑰條件來要求具有Department=ITProject=Alpha配對的加密內容。它會將 kms:EncryptionContextKeys 條件索引鍵與 ForAllValues 集合運算子搭配使用,以僅允許 DepartmentProject 加密內容索引鍵。

ForAllValues 集合運算子將請求中的加密內容索引鍵限制為 DepartmentProject。如果在條件下單獨使用它,則此 set 運算符將允許沒有加密內容的請求,但在此配置中,此情況下的 kmsEncryptionContext:: 上下文鍵將失敗。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Department": "IT", "kms:EncryptionContext:Project": "Alpha" }, "ForAllValues:StringEquals": { "kms:EncryptionContextKeys": [ "Department", "Project" ] } } }

您也可以禁止多個加密內容對。以下範例金鑰政策陳述式使用 Deny 效果,在請求中的加密內容包含 Stage=RestrictedStage=Production 對的情形下,禁止主體使用 KMS 金鑰。

相同索引鍵 (kms:EncryptionContext:Stage) 的多個值 (RestrictedProduction) 由 OR 隱式連線。如需詳細資訊,請參閱《IAM 使用者指南》中的具有多個索引鍵或值之條件的評估邏輯

{ "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Stage": [ "Restricted", "Production" ] } } }

加密內容條件需區分大小寫

解密操作中指定的加密內容和加密操作中指定的加密內容必須完全一樣,且大小寫相符。只有具有多對之加密內容中的配對順序可以改變。

不過,在政策條件中,條件金鑰不區分大小寫。條件值是否區分大小寫,取決於您使用的政策條件運算子,例如 StringEqualsStringEqualsIgnoreCase

因此,由 kms:EncryptionContext: 字首和 context-key 替換組成的條件金鑰不區分大小寫。使用此條件的政策不會檢查條件金鑰任一元素的大小寫。值 (亦即 context-value 替換) 是否區分大小寫,取決於政策條件運算子。

例如,以下政策陳述式允許操作的加密內容包含 Appname 金鑰,無論其大小寫。StringEquals 條件要求 ExampleApp 符合指定的大寫形式。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Appname": "ExampleApp" } } }

若要需要區分大小寫的加密內容金鑰,請使用 kms: EncryptionContextKeys 原則條件搭配區分大小寫的條件運算子,例如。StringEquals在這個政策條件中,因為加密內容索引鍵是此政策條件的值,所以其是否區分大小寫取決於條件運算子。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "AppName" } } }

若要對加密內容金鑰和值進行區分大小寫的評估,請在相同的原則陳述式中同時使用kms:EncryptionContextKeys和 kmsEncryptionContext:: 內容索引鍵原則條件。區分大小寫的條件運算子 (例如 StringEquals) 一律適用於條件的值。加密內容索引鍵 (例如 AppName) 是 kms:EncryptionContextKeys 條件的值。加密內容值 (例如ExampleApp) 是 kms:EncryptionContext: 內容索引鍵條件的值。

例如,在以下範例政策陳述式中,因為 StringEquals 運算子區分大小寫,所以加密內容索引鍵和加密內容值會區分大小寫。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "AppName" }, "StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp" } } }

在加密內容條件中使用變數

加密內容對中的金鑰和值必須是簡單的常值字串。它們不能是整數或物件,或任何未完全解析的類型。如果您使用不同的類型 (例如整數或浮點數),則會將其 AWS KMS 解譯為常值字串。

"encryptionContext": { "department": "10103.0" }

不過,kms:EncryptionContext:context-key 條件索引鍵的值可以是 IAM 政策變數。這些政策變數會根據要求中的值在執行時間中解析。例如,aws:CurrentTime 解析為請求的時間,而 aws:username 解析為易記的發起人名稱。

您可以使用這些政策變數來建立政策陳述式,其條件加密內容中需要非常特定的資訊,例如發起人的使用者名稱。由於它包含變數,因此您可以對可擔任角色的所有使用者使用相同的政策陳述式。您不需要為每個使用者個別編寫政策陳述式。

請考慮以下情況,您想要所有可擔任角色的使用者使用相同的 KMS 金鑰來加密和解密其資料。不過,您只想要允許他們解密由他們加密的資料。首先要求每個請求都 AWS KMS 包含密鑰所在的加密上下文,user而該值是調 AWS 用者的用戶名,例如以下內容。

"encryptionContext": { "user": "bob" }

然後,若要強制執行此需求,您可以使用類似以下範例中的政策陳述式。此政策陳述式提供 TestTeam 角色使用 KMS 金鑰加密和解密資料的許可。不過,許可只有在請求中的加密內容包含 "user": "<username>" 對時才有效。為了代表使用者名稱,條件使用 aws:username 政策變數。

評估請求時,發起人的使用者名稱會取代條件中的變數。因此,條件需要 "user": "bob" 的「bob」和 "user": "alice" 的「alice」加密內容。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/TestTeam" }, "Action": [ "kms:Decrypt", "kms:Encrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:user": "${aws:username}" } } }

您只能在 kms:EncryptionContext:context-key 條件索引鍵的值中使用 IAM 政策變數。您不能在金鑰中使用變數。

您也可以在變數中使用供應商特定的內容金鑰。這些內容索引鍵會唯一識別使用 Web 身分聯盟登入 AWS 的使用者。

如同所有變數,這些變數只能用於 kms:EncryptionContext:context-key 政策條件,不能用於實際的加密內容。而且只能用於條件的值,不能用於金鑰。

例如,下列金鑰政策陳述式與前一個陳述式類似。不過,條件需要加密內容,其金鑰是 sub 而值是可唯一識別登入 Amazon Cognito 使用者集區的使用者。如需有關在 Amazon Cognito 中識別使用者和角色的詳細資訊,請參閱《Amazon Cognito 開發人員指南》中的 IAM 角色

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/TestTeam" }, "Action": [ "kms:Decrypt", "kms:Encrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:sub": "${cognito-identity.amazonaws.com:sub}" } } }

另請參閱

公里:EncryptionContextKeys

AWS KMS 條件鍵 條件類型 值類型 API 操作 Policy type (政策類型)

kms:EncryptionContextKeys

字串 (清單)

多重值

CreateGrant

Decrypt

Encrypt

GenerateDataKey

GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

GenerateDataKeyWithoutPlaintext

ReEncrypt

RetireGrant

金鑰政策和 IAM 政策

您可以使用 kms:EncryptionContextKeys 條件金鑰,依據密碼編譯操作請求中的加密內容,控制對對稱加密 KMS 金鑰的存取。使用此條件索引鍵,只評估每個加密內容對中的金鑰。若要同時評估加密內容中的金鑰和值,請使用 kms:EncryptionContext:context-key 條件索引鍵。

您不能使用非對稱 KMS 金鑰HMAC KMS 金鑰在密碼編譯操作中指定加密內容。非對稱演算法和 MAC 演算法不支援加密內容。

注意

條件索引鍵值 (包括加密內容金鑰) 必須符合金 AWS KMS 鑰原則的字元和編碼規則。您可能無法使用此條件金鑰來表示所有的有效加密內容金鑰。如需有關金鑰政策文件規則的詳細資訊,請參閱金鑰政策格式。如需有關 IAM 政策文件規則的詳細資訊,請參閱《IAM 使用者指南》中的 IAM 名稱需求

這是多重值條件索引鍵。您可以在每個 API 請求中指定多個加密內容對。kms:EncryptionContextKeys 會將請求中的加密內容索引鍵與政策中的加密內容索引鍵集合進行比較。若要判斷這些集合的比較方式,您必須提供政策條件中的 ForAnyValueForAllValues 集合運算子。如需集合運算子的詳細資訊,請參閱《IAM 使用者指南》中的使用多個索引鍵和值

  • ForAnyValue:請求中至少有一個加密內容索引鍵必須符合政策條件中的加密內容索引鍵。允許使用其他加密內容索引鍵。如果請求沒有加密內容,則不符合條件。

  • ForAllValues:請求中每個加密內容索引鍵必須符合政策條件中的加密內容索引鍵。此集合運算子會將加密內容索引鍵限制為政策條件中的索引鍵。它不需要任何加密內容索引鍵,但它禁止未指定的加密內容索引鍵。

以下範例金鑰政策陳述式將 kms:EncryptionContextKeys 條件索引鍵與 ForAnyValue 集合運算子搭配使用。此政策陳述式僅在請求中的至少一個加密內容對包含 AppName 金鑰時 (無論其值為何),才允許使用指定操作的 KMS 金鑰。

例如,此金鑰政策陳述式允許具有兩個加密內容對、AppName=HelperProject=AlphaGenerateDataKey 請求,因為第一個加密內容對符合條件。僅具有 Project=Alpha 或沒有加密內容的請求將失敗。

由於StringEquals條件作業區分大小寫,因此此原則陳述式需要加密內容金鑰的拼字和大小寫。但是,您也可以使用忽略金鑰大小寫的條件運算子,例如 StringEqualsIgnoreCase

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "AppName" } } }

您也可以使用 kms:EncryptionContextKeys 條件索引鍵來要求使用 KMS 金鑰之密碼編譯操作中的加密內容 (任何加密內容)。

以下範例金鑰政策陳述式使用 kms:EncryptionContextKeys 條件索引鍵搭配 Null 條件運算子,僅在 API 請求中存在加密內容 (不是 null) 時,才允許存取 KMS 金鑰。此情況不會檢查加密內容的索引鍵或值。它只會驗證加密內容是否存在。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "Null": { "kms:EncryptionContextKeys": false } } }

另請參閱

公里:ExpirationModel

AWS KMS 條件鍵 條件類型 值類型 API 操作 Policy type (政策類型)

kms:ExpirationModel

字串

單一值

ImportKeyMaterial

金鑰政策和 IAM 政策

kms:ExpirationModel條件索引鍵會根據要求中的ExpirationModel參數值控制對ImportKeyMaterial作業的存取。

ExpirationModel 是選擇性參數,用來決定匯入的金鑰材料是否過期。有效值為 KEY_MATERIAL_EXPIRESKEY_MATERIAL_DOES_NOT_EXPIREKEY_MATERIAL_EXPIRES 為預設值。

到期日期和時間由ValidTo參數的值決定。除非 ExpirationModel 參數的值是 KEY_MATERIAL_DOES_NOT_EXPIRE,否則 ValidTo 參數為必要。您也可以使用 kms: ValidTo condition 金鑰來要求特定的到期日作為存取條件。

以下範例政策陳述式使用 kms:ExpirationModel 條件索引鍵,只在請求包含 ExpirationModel 參數且其值為 KEY_MATERIAL_DOES_NOT_EXPIRE 時,才允許使用者將金鑰材料匯入 KMS 金鑰。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:ImportKeyMaterial", "Resource": "*", "Condition": { "StringEquals": { "kms:ExpirationModel": "KEY_MATERIAL_DOES_NOT_EXPIRE" } } }

您也可以使用 kms:ExpirationModel 條件索引鍵,只在金鑰材料過期時才允許使用者匯入金鑰材料。以下範例金鑰政策陳述式使用 kms:ExpirationModel 條件索引鍵搭配 Null 條件運算子,僅當請求沒有 ExpirationModel 參數時,才允許使用者匯入金鑰材料。的預設值 ExpirationModel 為KEY_MATERIAL_EXPIRES

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:ImportKeyMaterial", "Resource": "*", "Condition": { "Null": { "kms:ExpirationModel": true } } }

另請參閱

公里:GrantConstraintType

AWS KMS 條件鍵 條件類型 值類型 API 操作 Policy type (政策類型)

kms:GrantConstraintType

字串

單一值

CreateGrant

RetireGrant

金鑰政策和 IAM 政策

您可以使用此條件索引鍵,根據要求中的 grant 條件約束類型來控制對CreateGrant作業的存取。

建立授與時,您可以選擇指定授與限制以允許操作,僅在特定加密內容存在時才授與許可。授與限制可以是兩種類型其中之一:EncryptionContextEqualsEncryptionContextSubset。您可以使用此條件金鑰來檢查請求是否包含其中一個類型。

重要

請勿在此欄位包含機密或敏感資訊。在 CloudTrail 記錄檔和其他輸出中,此欄位可能會以純文字顯示。

以下範例金鑰政策陳述式使用 kms:GrantConstraintType 條件索引鍵,只在請求包含 EncryptionContextEquals 授予限制條件時才允許使用者建立授予。此範例顯示金鑰政策中的政策陳述式。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:GrantConstraintType": "EncryptionContextEquals" } } }

另請參閱

公里:GrantIsForAWSResource

AWS KMS 條件鍵 條件類型 值類型 API 操作 Policy type (政策類型)

kms:GrantIsForAWSResource

Boolean

單一值

CreateGrant

ListGrants

RevokeGrant

金鑰政策和 IAM 政策

僅當與整合的AWS 服務代表使用者 AWS KMS呼叫作RevokeGrant業時 ListGrants,才允許或拒絕、或作業的權限。CreateGrant此政策條件不允許使用者直接呼叫這些授予操作。

以下範例金鑰政策陳述式會使用 kms:GrantIsForAWSResource 條件索引鍵。它可讓整合的 AWS AWS KMS服務 (例如 Amazon EBS) 代表指定的主體在此 KMS 金鑰上建立授權。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } }

另請參閱

公里:GrantOperations

AWS KMS 條件鍵 條件類型 值類型 API 操作 Policy type (政策類型)

kms:GrantOperations

字串

多重值

CreateGrant

金鑰政策和 IAM 政策

您可以使用此條件索引鍵,根據要求中的授與CreateGrant作業控制對作業的存取。例如,您可以允許使用者建立授予,以委派加密 (但不是解密) 的許可。如需授予的詳細資訊,請參閱使用授予

這是多重值條件索引鍵kms:GrantOperations 會將 CreateGrant 請求中的一組授予操作與政策中的一組授予操作進行比較。若要判斷這些集合的比較方式,您必須提供政策條件中的 ForAnyValueForAllValues 集合運算子。如需集合運算子的詳細資訊,請參閱《IAM 使用者指南》中的使用多個索引鍵和值

  • ForAnyValue:請求中至少有一個授予操作必須符合政策條件中的其中一個授予操作。允許其他授予操作。

  • ForAllValues:要求中的每個授權作業都必須符合原則條件中的授權作業。此集合運算子會將授予操作限制為政策條件中指定的操作。它不需要任何授予操作,但它禁止未指定的授予操作。

    ForAllValues 當請求中沒有授權操作時,也返回 true,但CreateGrant不允許它。如果 Operations 參數遺失或具有空值時,則 CreateGrant 請求會失敗。

以下範例政策陳述式使用 kms:GrantOperations 條件索引鍵,僅當授予操作為 EncryptReEncryptTo 或兩者時,才允許建立授予。如果授予包含任何其他操作,則 CreateGrant 請求會失敗。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Encrypt", "ReEncryptTo" ] } } }

如果您將政策條件中的集合運算子變更為 ForAnyValue,則政策陳述式會要求授予中至少有一個授予操作為 EncryptReEncryptTo,但它會允許其他授予操作,例如 DecryptReEncryptFrom

另請參閱

公里:GranteePrincipal

AWS KMS 條件鍵 條件類型 值類型 API 操作 Policy type (政策類型)

kms:GranteePrincipal

字串

單一值

CreateGrant

IAM 和金鑰政策

您可以使用此條件鍵,根據請求中的GranteePrincipal參數值來控制對CreateGrant作業的存取。例如,您可以只在 CreateGrant 請求中的承授者主體符合條件陳述式中指定的主體時,才可建立授予來使用 KMS 金鑰。

若要指定受權者主體,請使用主體的 Amazon 資源名稱 (ARN)。 AWS 有效的主體包括 IAM 使用者 AWS 帳戶、IAM 角色、聯合身分使用者和假定角色使用者。如需主體 ARN 語法的相關說明,請參閱 IAM 使用者指南中的 IAM ARN

以下範例政策陳述式使用 kms:GranteePrincipal 條件索引鍵,僅當授予中的承授者主體是 LimitedAdminRole 時,才可建立 KMS 金鑰的授予。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:GranteePrincipal": "arn:aws:iam::111122223333:role/LimitedAdminRole" } } }

另請參閱

公里:KeyAgreementAlgorithm

AWS KMS 條件鍵 條件類型 值類型 API 操作 Policy type (政策類型)

kms:KeyAgreementAlgorithm

字串

單一值

DeriveSharedSecret

金鑰政策和 IAM 政策

您可以使用kms:KeyAgreementAlgorithm條件鍵,根據請求中的KeyAgreementAlgorithm參數值來控制對DeriveSharedSecret作業的存取。的唯一有效值KeyAgreementAlgorithmECDH

例如,下列金鑰原則陳述式會使用kms:KeyAgreementAlgorithm條件金鑰來拒絕所有存取, DeriveSharedSecret 除非KeyAgreementAlgorithmECDH

{ "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:DeriveSharedSecret", "Resource": "*", "Condition": { "StringNotEquals": { "kms:KeyAgreementAlgorithm": "ECDH" } } }

另請參閱

公里:KeyOrigin

AWS KMS 條件鍵 條件類型 值類型 API 操作 Policy type (政策類型)

kms:KeyOrigin

字串

單一值

CreateKey

KMS 金鑰資源操作

IAM 政策

金鑰政策和 IAM 政策

kms:KeyOrigin 條件索引鍵會根據此操作建立或使用之 KMS 金鑰的 Origin 屬性值,控制對操作的存取。以資源條件或請求條件運作。

您可以使用此條件鍵,根據請求中 Origin 參數的值來控制對CreateKey作業的存取。Origin 的有效值為 AWS_KMSAWS_CLOUDHSMEXTERNAL

例如,您只能在 () 中產生金鑰材料時建立 KMS 金鑰,只有在與自訂金鑰存放區 AWS KMS (AWS_KMS) 相關聯的 AWS CloudHSM 叢集中產生金鑰材料時,或僅當金鑰材料是從外部來源 (EXTERNAL) 匯入時才建立 KMS 金鑰。AWS_CLOUDHSM

下列範例金鑰原則陳述式只 AWS KMS 會在建立金鑰材料時使用kms:KeyOrigin條件金鑰來建立 KMS 金鑰。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringEquals": { "kms:KeyOrigin": "AWS_KMS" } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:GenerateDataKeyPair", "kms:GenerateDataKeyPairWithoutPlaintext", "kms:ReEncrypt*" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/*", "Condition": { "StringEquals": { "kms:KeyOrigin": "AWS_CLOUDHSM" } } } ] }

您也可以使用 kms:KeyOrigin 條件索引鍵,根據用於操作之 KMS 金鑰的 Origin 屬性控制對使用或管理 KMS 金鑰之操作的存取。操作必須是 KMS 金鑰資源操作,也就是授權特定 KMS 金鑰的操作。若要識別 KMS 金鑰資源操作,請在動作與資源表中尋找操作之 Resources 資料欄的 KMS key 值。

例如,下列 IAM 政策允許主體執行指定的 KMS 金鑰資源操作,但僅能使用帳戶中於自訂金鑰存放區中建立的 KMS 金鑰。

{ "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:GenerateDataKeyPair", "kms:GenerateDataKeyPairWithoutPlaintext", "kms:ReEncrypt*" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/*", "Condition": { "StringEquals": { "kms:KeyOrigin": "AWS_CLOUDHSM" } } }

另請參閱

公里:KeySpec

AWS KMS 條件鍵 條件類型 值類型 API 操作 Policy type (政策類型)

kms:KeySpec

字串

單一值

CreateKey

KMS 金鑰資源操作

IAM 政策

金鑰政策和 IAM 政策

kms:KeySpec 條件索引鍵會根據此操作建立或使用之 KMS 金鑰的 KeySpec 屬性值,控制對操作的存取。

您可以在 IAM 政策中使用此條件金鑰,根據請求中的KeySpec參數值控制對CreateKey作業的存CreateKey取。例如,您可以使用此條件,允許使用者僅建立對稱加密 KMS 金鑰,或僅建立 HMAC KMS 金鑰。

下列範例 IAM 政策陳述式會使用 kms:KeySpec 條件金鑰,允許主體僅建立 RSA 非對稱 KMS 金鑰。僅在請求中的 KeySpecRSA_ 開頭時,許可才有效。

{ "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringLike": { "kms:KeySpec": "RSA_*" } } }

您也可以使用 kms:KeySpec 條件索引鍵,根據用於操作之 KMS 金鑰的 KeySpec 屬性控制對使用或管理 KMS 金鑰之操作的存取。操作必須是 KMS 金鑰資源操作,也就是授權特定 KMS 金鑰的操作。若要識別 KMS 金鑰資源操作,請在動作與資源表中尋找操作之 Resources 資料欄的 KMS key 值。

例如,下列 IAM 政策允許主體執行指定的 KMS 金鑰資源操作,但僅能使用帳戶中的對稱加密 KMS 金鑰。

{ "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:DescribeKey" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/*", "Condition": { "StringEquals": { "kms:KeySpec": "SYMMETRIC_DEFAULT" } } }

另請參閱

公里:KeyUsage

AWS KMS 條件鍵 條件類型 值類型 API 操作 Policy type (政策類型)

kms:KeyUsage

字串

單一值

CreateKey

KMS 金鑰資源操作

IAM 政策

金鑰政策和 IAM 政策

kms:KeyUsage 條件索引鍵會根據此操作建立或使用之 KMS 金鑰的 KeyUsage 屬性值,控制對操作的存取。

您可以使用此條件鍵,根據請求中的KeyUsage參數值來控制對CreateKey作業的存取。的有效值為KeyUsageENCRYPT_DECRYPTSIGN_VERIFYGENERATE_VERIFY_MAC、和KEY_AGREEMENT

例如,您只能在 KeyUsageENCRYPT_DECRYPT 時建立 KMS 金鑰,或在 KeyUsageSIGN_VERIFY 時拒絕使用者許可。

下列範例 IAM 政策陳述式會使用 kms:KeyUsage 條件索引鍵,僅在 KeyUsageENCRYPT_DECRYPT 時才建立 KMS 金鑰。

{ "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringEquals": { "kms:KeyUsage": "ENCRYPT_DECRYPT" } } }

您也可以使用 kms:KeyUsage 條件索引鍵,根據操作中 KMS 金鑰的 KeyUsage 屬性控制對使用或管理 KMS 金鑰之操作的存取。操作必須是 KMS 金鑰資源操作,也就是授權特定 KMS 金鑰的操作。若要識別 KMS 金鑰資源操作,請在動作與資源表中尋找操作之 Resources 資料欄的 KMS key 值。

例如,下列 IAM 政策允許主體執行指定的 KMS 金鑰資源操作,但僅能使用帳戶中用於簽署和驗證的 KMS 金鑰。

{ "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:DescribeKey", "kms:GetPublicKey", "kms:ScheduleKeyDeletion" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/*", "Condition": { "StringEquals": { "kms:KeyUsage": "SIGN_VERIFY" } } }

另請參閱

公里:MacAlgorithm

AWS KMS 條件鍵 條件類型 值類型 API 操作 Policy type (政策類型)

kms:MacAlgorithm

字串

單一值

GenerateMac

VerifyMac

金鑰政策和 IAM 政策

您可以使用kms:MacAlgorithm條件索引鍵,根據請求中的MacAlgorithm參數值來控制對GenerateMacVerifyMac作業的存取。

以下範例金鑰政策允許可擔任 testers 角色的使用者,僅可在請求中的 MAC 演算法為 HMAC_SHA_384HMAC_SHA_512 時,使用 HMAC KMS 金鑰來產生及驗證 HMAC 標籤。此政策會使用兩個不同的政策陳述式,每個陳述式都有各自的條件。若您在單一條件陳述式中指定多個 MAC 演算法,則該條件會同時需要兩個演算法,而非僅任一個演算法。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/testers" }, "Action": [ "kms:GenerateMac", "kms:VerifyMac" ], "Resource": "*", "Condition": { "StringEquals": { "kms:MacAlgorithm": "HMAC_SHA_384" } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/testers" }, "Action": [ "kms:GenerateMac", "kms:VerifyMac" ], "Resource": "*", "Condition": { "StringEquals": { "kms:MacAlgorithm": "HMAC_SHA_512" } } } ] }

另請參閱

公里:MessageType

AWS KMS 條件鍵 條件類型 值類型 API 操作 Policy type (政策類型)

kms:MessageType

字串

單一值

Sign

Verify

金鑰政策和 IAM 政策

根據請求中的 MessageType 參數值,kms:MessageType 條件索引鍵會控制對 SignVerify 操作的存取。MessageType 的有效值為 RAWDIGEST

例如,下列金鑰政策陳述式使用 kms:MessageType 條件索引鍵,以使用非對稱 KMS 金鑰簽署訊息,而非訊息摘要。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:Sign", "Resource": "*", "Condition": { "StringEquals": { "kms:MessageType": "RAW" } } }

另請參閱

公里:MultiRegion

AWS KMS 條件鍵 條件類型 值類型 API 操作 Policy type (政策類型)

kms:MultiRegion

Boolean

單一值

CreateKey

KMS 金鑰資源操作

金鑰政策和 IAM 政策

您可以使用此條件索引鍵,僅允許對單一區域金鑰的操作,或僅允許對多區域金鑰的操作。kms:MultiRegion條件金鑰可控制 KMS 金鑰CreateKey作 AWS KMS 業的存取,以及根據 KMS 金鑰的MultiRegion屬性值存取作業。有效值為 true (多區域) 和 false (單一區域)。所有 KMS 金鑰都有 MultiRegion 屬性。

例如,下列 IAM 政策陳述式會使用 kms:MultiRegion 條件索引鍵,允許主體僅建立單一區域金鑰。

{ "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "Bool": { "kms:MultiRegion": false } } }

公里:MultiRegionKeyType

AWS KMS 條件鍵 條件類型 值類型 API 操作 Policy type (政策類型)

kms:MultiRegionKeyType

字串

單一值

CreateKey

KMS 金鑰資源操作

金鑰政策和 IAM 政策

您可以使用此條件索引鍵,僅允許對多區域主要金鑰的操作,或僅允許對多區域複本金鑰的操作。kms:MultiRegionKeyType條件金鑰控制對 KMS 金鑰CreateKey作 AWS KMS 業的存取,以及根據 KMS 金鑰的MultiRegionKeyType屬性控制作業的存取。有效值為 PRIMARYREPLICA。只有多區域金鑰具有 MultiRegionKeyType 屬性。

一般而言,您需要使用 IAM 政策中的 kms:MultiRegionKeyType 條件索引鍵,以控制對多個 KMS 金鑰的存取。不過,由於指定的多區域金鑰可以變更為主要或複本金鑰,因此您可能想要在金鑰政策中使用此條件,僅當特定的多區域金鑰是主要金鑰或複本金鑰時才允許操作。

例如,以下 IAM 政策陳述式使用 kms:MultiRegionKeyType 條件索引鍵,以允許主體僅對指定 AWS 帳戶中的多區域複本金鑰排程和取消金鑰刪除。

{ "Effect": "Allow", "Action": [ "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "arn:aws:kms:*:111122223333:key/*", "Condition": { "StringEquals": { "kms:MultiRegionKeyType": "REPLICA" } } }

若要允許或拒絕存取所有多區域金鑰,您可以將兩個值或 Null 值與 kms:MultiRegionKeyType 搭配使用。不過,建議您使用 kms: MultiRegion 條件金鑰來達到此目的。

公里:PrimaryRegion

AWS KMS 條件鍵 條件類型 值類型 API 操作 Policy type (政策類型)

kms:PrimaryRegion

字串 (清單)

單一值

UpdatePrimaryRegion

金鑰政策和 IAM 政策

您可以使用此條件鍵來限制UpdatePrimaryRegion作業中的目的地區域。這些是可 AWS 區域 以託管您的多區域主鍵。

kms:PrimaryRegion條件鍵會根據PrimaryRegion參數值控制對UpdatePrimaryRegion作業的存取。此PrimaryRegion參數指定要提升為主要 AWS 區域 的多區域複本金鑰。條件的值是一個或多個 AWS 區域 名稱,例如us-east-1ap-southeast-2,或區域名稱模式,例如 eu-*

例如,以下金鑰政策陳述式使用 kms:PrimaryRegion 條件索引鍵,以允許主體將多重區域金鑰的主要區域更新為四個指定區域之一。

{ "Effect": "Allow", "Action": "kms:UpdatePrimaryRegion", "Principal": { "AWS": "arn:aws:iam::111122223333:role/Developer" }, "Resource": "*", "Condition": { "StringEquals": { "kms:PrimaryRegion": [ "us-east-1", "us-west-2", "eu-west-3", "ap-southeast-2" ] } } }

公里:ReEncryptOnSameKey

AWS KMS 條件鍵 條件類型 值類型 API 操作 Policy type (政策類型)

kms:ReEncryptOnSameKey

Boolean

單一值

ReEncrypt

金鑰政策和 IAM 政策

您可以根據要求是否指定與原始加密相同的目的地 KMS 金鑰,使用此條件金鑰來控制對ReEncrypt作業的存取。

例如,下列金鑰政策陳述式使用 kms:ReEncryptOnSameKey 條件索引鍵,只在目的地 CMK 與原始加密所用的 KMS 金鑰相同時,才可重新加密。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:ReEncrypt*", "Resource": "*", "Condition": { "Bool": { "kms:ReEncryptOnSameKey": true } } }

公里:RequestAlias

AWS KMS 條件鍵 條件類型 值類型 API 操作 Policy type (政策類型)

kms:RequestAlias

字串 (清單)

單一值

密碼編譯操作

DescribeKey

GetPublicKey

金鑰政策和 IAM 政策

您可以使用此條件索引鍵,僅當請求使用特定別名來識別 KMS 金鑰時,才允許操作。kms:RequestAlias 條件索引鍵可根據在請求中識別該 KMS 金鑰的別名,控制對密碼編譯操作、GetPublicKeyDescribeKey 中所使用 KMS 金鑰的存取。(此原則條件對作業沒有影響,因為GenerateRandom作業不使用 KMS 金鑰或別名。)

此條件支援中的屬性型存取控制 (ABAC) AWS KMS,可讓您根據 KMS 金鑰的標籤和別名控制 KMS 金鑰的存取。您可以使用標籤和別名,來允許或拒絕對 KMS 金鑰的存取,而無需變更政策或授予。如需詳細資訊,請參閱 AWS KMS 的 ABAC

若要在此政策條件中指定別名,請使用別名名稱,例如 alias/project-alpha,或別名名稱模式,例如 alias/*test*。您不能指定此條件索引鍵值中的別名 ARN

若要滿足此條件,請求中的 KeyId 參數值必須為相符的別名名稱或別名 ARN。如果請求使用不同的金鑰識別符,則其不滿足條件,即使識別為相同的 KMS 金鑰。

例如,下列金鑰原則陳述式允許主體呼叫 KMS 金鑰上的GenerateDataKey作業。但是,僅當請求中的 KeyId 參數值為 alias/finance-key 或具有該別名名稱的別名 ARN,例如 arn:aws:kms:us-west-2:111122223333:alias/finance-key

{ "Sid": "Key policy using a request alias condition", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/developer" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:RequestAlias": "alias/finance-key" } } }

您無法使用此條件鍵來控制對別名作業的存取,例如CreateAliasDeleteAlias。如需控制對別名操作之存取的詳細資訊,請參閱 控制對別名的存取

公里:ResourceAliases

AWS KMS 條件鍵 條件類型 值類型 API 操作 Policy type (政策類型)

kms:ResourceAliases

字串 (清單)

多重值 KMS 金鑰資源操作

僅限 IAM 政策

使用此條件索引鍵,根據與 KMS 金鑰相關聯的別名,控制對 KMS 金鑰的存取。操作必須是 KMS 金鑰資源操作,也就是授權特定 KMS 金鑰的操作。若要識別 KMS 金鑰資源操作,請在動作與資源表中尋找操作之 Resources 資料欄的 KMS key 值。

此條件支援 AWS KMS中的屬性型存取控制 (ABAC)。透過 ABAC,您可以根據指派給 KMS 金鑰的標籤和與 KMS 金鑰相關聯的別名,來控制對 KMS 金鑰的存取。您可以使用標籤和別名,來允許或拒絕對 KMS 金鑰的存取,而無需變更政策或授予。如需詳細資訊,請參閱 AWS KMS 的 ABAC

別名在 AWS 帳戶 和區域中必須是唯一的,但此條件可讓您控制對相同區域中多個 KMS 金鑰的存取權 (使用StringLike比較運算子),或控制每個帳戶不同的多個 KMS 金鑰 AWS 區域 的存取權。

注意

KMS:ResourceAliases條件只有在 KMS 金鑰符合每個 KMS 金鑰配額的別名時才有效。如果 KMS 金鑰超過此配額,則會拒絕透過 kms:ResourceAliases 條件授權使用 KMS 金鑰的主體存取 KMS 金鑰。

若要在此政策條件中指定別名,請使用別名名稱,例如 alias/project-alpha,或別名名稱模式,例如 alias/*test*。您不能指定此條件索引鍵值中的別名 ARN。若要滿足條件,操作中使用的 KMS 金鑰必須具有指定的別名。在操作要求中是否識別或如何識別 KMS 金鑰並不重要。

這是多重值條件索引鍵,會將與 KMS 金鑰相關聯的一組別名與政策中的一組別名進行比較。若要判斷這些集合的比較方式,您必須提供政策條件中的 ForAnyValueForAllValues 集合運算子。如需集合運算子的詳細資訊,請參閱《IAM 使用者指南》中的使用多個索引鍵和值

  • ForAnyValue:至少有一個與 KMS 金鑰相關聯的別名必須符合原則條件中的別名。允許使用其他別名。如果 KMS 金鑰沒有別名,則不符合條件。

  • ForAllValues:與 KMS 金鑰關聯的每個別名都必須符合原則中的別名。此集合運算子會將與 KMS 金鑰相關聯的別名限制為政策條件中的別名。它不需要任何別名,但會禁止未指定的別名。

例如,下列 IAM 政策陳述式允許主體呼叫與finance-key別名相關聯之指定 AWS 帳戶 之任何 KMS 金鑰上的GenerateDataKey作業。(受影響的 KMS 金鑰的金鑰政策也必須允許主體的帳戶使用這些金鑰來進行此操作。) 若要在可能與 KMS 金鑰相關聯的許多別名之一為 alias/finance-key 時滿足該條件,條件會使用 ForAnyValue 集合運算子。

由於 kms:ResourceAliases 條件是根據資源,而非請求,對於任何與 finance-key 別名相關聯的 KMS 金鑰的 GenerateDataKey 呼叫會成功,即使請求使用金鑰 ID金鑰 ARN 來識別 KMS 金鑰。

{ "Sid": "AliasBasedIAMPolicy", "Effect": "Allow", "Action": "kms:GenerateDataKey", "Resource": [ "arn:aws:kms:*:111122223333:key/*", "arn:aws:kms:*:444455556666:key/*" ], "Condition": { "ForAnyValue:StringEquals": { "kms:ResourceAliases": "alias/finance-key" } } }

下列範例 IAM 政策陳述式允許主體啟用和停用 KMS 金鑰,但僅當 KMS 金鑰的所有別名都包含 "Test" 時。此政策陳述式使用兩個條件。具有 ForAllValues 集合運算子的條件需要所有與 KMS 金鑰相關聯的別名都包含「測試」。具有 ForAnyValue 集合運算子的條件需要 KMS 金鑰至少有一個具有「測試」的別名。沒有 ForAnyValue 條件時,此政策陳述式會允許主體使用沒有別名的 KMS 金鑰。

{ "Sid": "AliasBasedIAMPolicy", "Effect": "Allow", "Action": [ "kms:EnableKey", "kms:DisableKey" ], "Resource": "arn:aws:kms:*:111122223333:key/*", "Condition": { "ForAllValues:StringLike": { "kms:ResourceAliases": [ "alias/*Test*" ] }, "ForAnyValue:StringLike": { "kms:ResourceAliases": [ "alias/*Test*" ] } } }

公里:ReplicaRegion

AWS KMS 條件鍵 條件類型 值類型 API 操作 Policy type (政策類型)

kms:ReplicaRegion

字串 (清單)

單一值

ReplicateKey

金鑰政策和 IAM 政策

您可以使用此條件索引鍵來限制主體可複寫多區域金鑰的 AWS 區域 內容。kms:ReplicaRegion條件索引鍵會根據要求中的ReplicaRegion參數值控制對ReplicateKey作業的存取。此參數指定為新複本金鑰指定 AWS 區域 。

條件的值是一或多個 AWS 區域 名稱,例如us-east-1或或ap-southeast-2名稱模式,例如eu-*。如需 AWS KMS 支援 AWS 區域 的名稱清單 AWS Key Management Service ,請參閱 AWS 一般參考.

例如,下列索引鍵原則陳述式會使用kms:ReplicaRegion條件索引鍵,只有當ReplicaRegion參數值是其中一個指定的 Region 時,才允許主體呼叫ReplicateKey作業。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/Administrator" }, "Action": "kms:ReplicateKey" "Resource": "*", "Condition": { "StringEquals": { "kms:ReplicaRegion": [ "us-east-1", "eu-west-3", "ap-southeast-2" ] } } }

此條件鍵僅控制對ReplicateKey作業的存取。若要控制對UpdatePrimaryRegion作業的存取,請使用 kms: PrimaryRegion 條件金鑰。

公里:RetiringPrincipal

AWS KMS 條件鍵 條件類型 值類型 API 操作 Policy type (政策類型)

kms:RetiringPrincipal

字串 (清單)

單一值

CreateGrant

金鑰政策和 IAM 政策

您可以使用此條件鍵,根據請求中的RetiringPrincipal參數值來控制對CreateGrant作業的存取。例如,您可以只在 CreateGrant 請求中的 RetiringPrincipal 符合條件陳述式中的 RetiringPrincipal 時,才可建立授予來使用 KMS 金鑰。

若要指定淘汰主體,請使用主體的 Amazon 資源名稱 (ARN)。 AWS 有效的主體包括 IAM 使用者 AWS 帳戶、IAM 角色、聯合身分使用者和假定角色使用者。如需主體 ARN 語法的相關說明,請參閱 IAM 使用者指南中的 IAM ARN

下列金鑰原則陳述式範例可讓使用者建立 KMS 金鑰的授權。kms:RetiringPrincipal條件索引鍵會將權限限制為要CreateGrant求,其中授權中的淘汰主體為。LimitedAdminRole

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:RetiringPrincipal": "arn:aws:iam::111122223333:role/LimitedAdminRole" } } }

另請參閱

公里:RotationPeriodInDays

AWS KMS 條件鍵 條件類型 值類型 API 操作 Policy type (政策類型)

kms:RotationPeriodInDays

數值

單一值

EnableKeyRotation

金鑰政策和 IAM 政策

您可以使用此條件鍵來限制主參數可在EnableKeyRotation請求RotationPeriodInDays參數中指定的值。

RotationPeriodInDays指定每個自動按鍵輪替日期之間的天數。 AWS KMS 允許您指定 90 到 2560 天之間的輪替週期,但您可以使用kms:RotationPeriodInDays條件鍵進一步限制輪替週期,例如在有效範圍內強制執行最小輪替週期。

例如,下列金鑰原則陳述式會使用kms:RotationPeriodInDays條件索引鍵來防止主參與者在循環期間小於或等於 180 天時啟用金鑰輪換。

{ "Effect": "Deny", "Action": "kms:EnableKeyRotation", "Principal": "*", "Resource": "*", "Condition" : { "NumericLessThanEquals" : { "kms:RotationPeriodInDays" : "180" } } }

公里:ScheduleKeyDeletionPendingWindowInDays

AWS KMS 條件鍵 條件類型 值類型 API 操作 Policy type (政策類型)

kms:ScheduleKeyDeletionPendingWindowInDays

數值

單一值

ScheduleKeyDeletion

金鑰政策和 IAM 政策

您可以使用此條件鍵來限制主參數可在ScheduleKeyDeletion請求PendingWindowInDays參數中指定的值。

PendingWindowInDays指定刪除金鑰之前 AWS KMS 要等待的天數。 AWS KMS 可讓您指定介於 7 到 30 天之間的等待期間,但您可以使用kms:ScheduleKeyDeletionPendingWindowInDays條件鍵來進一步限制等候期間,例如強制執行有效範圍內的最短等待期。

例如,下列金鑰政策陳述式採用 kms:ScheduleKeyDeletionPendingWindowInDays 條件金鑰,以便防止主體在等待期間小於或等於 21 天時,排程刪除金鑰。

{ "Effect": "Deny", "Action": "kms:ScheduleKeyDeletion", "Principal": "*", "Resource": "*", "Condition" : { "NumericLessThanEquals" : { "kms:ScheduleKeyDeletionPendingWindowInDays" : "21" } } }

公里:SigningAlgorithm

AWS KMS 條件鍵 條件類型 值類型 API 操作 Policy type (政策類型)

kms:SigningAlgorithm

字串

單一值

Sign

Verify

金鑰政策和 IAM 政策

您可以使用kms:SigningAlgorithm條件索引鍵,根據請求中的SigningAlgorithm參數值來控制對 Sign 和 V erify 作業的存取。此條件金鑰不會影響以外執行的作業 AWS KMS,例如使用非對稱 KMS 金鑰組中的公開金 key pair 驗證簽章 AWS KMS。

下列範例金鑰政策允許可以擔任 testers 角色的使用者只有在請求所用的簽署演算法是 RSASSA_PSS 演算法 (例如 RSASSA_PSS_SHA512) 時,才能使用 KMS 金鑰簽署訊息。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/testers" }, "Action": "kms:Sign", "Resource": "*", "Condition": { "StringLike": { "kms:SigningAlgorithm": "RSASSA_PSS*" } } }

另請參閱

公里:ValidTo

AWS KMS 條件鍵 條件類型 值類型 API 操作 Policy type (政策類型)

kms:ValidTo

時間戳記

單一值

ImportKeyMaterial

金鑰政策和 IAM 政策

kms:ValidTo條件索引鍵會根據請求中的ValidTo參數值來控制ImportKeyMaterial作業的存取,這個值決定匯入的金鑰材料何時到期。這個值是以 Unix 時間表示。

在預設情況下,ImportKeyMaterial 請求需要 ValidTo 參數。但是,如果ExpirationModel參數的值為KEY_MATERIAL_DOES_NOT_EXPIRE,則ValidTo參數無效。您也可以使用 kms: ExpirationModel 條件索引鍵來要求ExpirationModel參數或特定參數值。

以下範例政策陳述式允許使用者將金鑰材料匯入 KMS 金鑰。kms:ValidTo 條件金鑰限制 ImportKeyMaterial 請求的許可,其中 ValidTo 值小於或等於 1546257599.0 (2018 年 12 月 31 日下午 11:59:59)。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:ImportKeyMaterial", "Resource": "*", "Condition": { "NumericLessThanEquals": { "kms:ValidTo": "1546257599.0" } } }

另請參閱

公里:ViaService

AWS KMS 條件鍵 條件類型 值類型 API 操作 Policy type (政策類型)

kms:ViaService

字串

單一值

KMS 金鑰資源操作

金鑰政策和 IAM 政策

kms:ViaService條件金鑰會限制使用 KMS 金鑰來自指定 AWS 服務的要求。您可以在每個 kms:ViaService 條件金鑰中指定一或多個服務。操作必須是 KMS 金鑰資源操作,也就是授權特定 KMS 金鑰的操作。若要識別 KMS 金鑰資源操作,請在動作與資源表中尋找操作之 Resources 資料欄的 KMS key 值。

例如,以下金鑰政策陳述式使用 kms:ViaService 條件索引鍵,僅當代表 ExampleRole 的請求來自美國西部 (奧勒岡) 區域的 Amazon EC2 或 Amazon RDS 時,才會允許客戶受管金鑰用於指定動作。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:ListGrants", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "ec2.us-west-2.amazonaws.com", "rds.us-west-2.amazonaws.com" ] } } }

您也可以使用 kms:ViaService 條件索引鍵,在請求來自特定的服務時,拒絕使用 KMS 金鑰的許可。例如,以下來自金鑰政策的陳述式使用 kms:ViaService 條件索引鍵,當代表 ExampleRole 的請求來自 AWS Lambda 時,防止將客戶受管金鑰用於 Encrypt 操作。

{ "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:Encrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "lambda.us-west-2.amazonaws.com" ] } } }
重要

當您使用 kms:ViaService 條件索引鍵時,該服務會代表 AWS 帳戶中的主體提出請求。這些主體必須擁有以下許可:

  • 使用 KMS 金鑰的許可。主體需要授予這些許可給整合服務,以便該服務可以代表主體使用客戶受管金鑰。如需詳細資訊,請參閱 AWS 服務使用 AWS KMS 的方式

  • 使用整合服務的許可。如需有關提供使用者存取與整合之 AWS 服務的詳細資訊 AWS KMS,請參閱整合式服務的說明文件。

所有 AWS 受管金鑰 在其金鑰政策文件中使用 kms:ViaService 條件索引鍵。只在請求是來自建立 KMS 金鑰的服務時,這個條件才僅允許將 KMS 金鑰用於這些請求。若要查看的金鑰原則 AWS 受管金鑰,請使用GetKeyPolicy作業。

kms:ViaService 條件金鑰在 IAM 和金鑰政策陳述式中有效。您指定的服務必須與 AWS KMS整合,並支援 kms:ViaService 條件金鑰。

支援 kms:ViaService 條件金鑰的服務

下表列出整合 AWS KMS 並支援在客戶管理金鑰中使用kms:ViaService條件金鑰的 AWS 服務。此表格中的服務可能無法在所有地區提供。在所有 AWS 分區中使用 AWS KMS ViaService 名稱的.amazonaws.com後綴。

注意

您可能需要水平或垂直捲動,才能查看此資料表中的所有資料。

服務名稱 AWS KMS ViaService 名稱
AWS App Runner apprunner.AWS_region.amazonaws.com
AWS AppFabric appfabric.AWS_region.amazonaws.com
Amazon AppFlow appflow.AWS_region.amazonaws.com
AWS Application Migration Service mgn.AWS_region.amazonaws.com
Amazon Athena athena.AWS_region.amazonaws.com
AWS Audit Manager auditmanager.AWS_region.amazonaws.com
Amazon Aurora rds.AWS_region.amazonaws.com
AWS Backup backup.AWS_region.amazonaws.com
AWS Backup 閘道 backup-gateway.AWS_region.amazonaws.com
Amazon Chime SDK chimevoiceconnector.AWS_region.amazonaws.com
AWS CodeArtifact codeartifact.AWS_region.amazonaws.com
Amazon 評論 CodeGuru 家 codeguru-reviewer.AWS_region.amazonaws.com
Amazon Comprehend comprehend.AWS_region.amazonaws.com
Amazon Connect connect.AWS_region.amazonaws.com
Amazon Connect Customer Profiles profile.AWS_region.amazonaws.com
Amazon Q in Connect wisdom.AWS_region.amazonaws.com
AWS Database Migration Service (AWS DMS) dms.AWS_region.amazonaws.com
AWS Directory Service directoryservice.AWS_region.amazonaws.com
Amazon DynamoDB dynamodb.AWS_region.amazonaws.com
Amazon DocumentDB docdb-elastic.AWS_region.amazonaws.com
Amazon EC2 Systems Manager (SSM) ssm.AWS_region.amazonaws.com
Amazon Elastic Block Store (Amazon EBS) ec2.AWS_region.amazonaws.com (僅 EBS)
Amazon Elastic Container Registry (Amazon ECR) ecr.AWS_region.amazonaws.com
Amazon Elastic File System (Amazon EFS) elasticfilesystem.AWS_region.amazonaws.com
Amazon ElastiCache

在條件索引鍵值中包含兩個 ViaService 名稱:

  • elasticache.AWS_region.amazonaws.com

  • dax.AWS_region.amazonaws.com

AWS Elemental MediaTailor mediatailor.AWS_region.amazonaws.com
AWS 實體解析度 entityresolution.AWS_region.amazonaws.com
Amazon EventBridge events.AWS_region.amazonaws.com
Amazon FinSpace finspace.AWS_region.amazonaws.com
Amazon Forecast forecast.AWS_region.amazonaws.com
Amazon FSx fsx.AWS_region.amazonaws.com
AWS Glue glue.AWS_region.amazonaws.com
AWS Ground Station groundstation.AWS_region.amazonaws.com
Amazon GuardDuty malware-protection.AWS_region.amazonaws.com
AWS HealthLake healthlake.AWS_region.amazonaws.com
AWS IoT SiteWise iotsitewise.AWS_region.amazonaws.com
Amazon Kendra kendra.AWS_region.amazonaws.com
Amazon Keyspaces (適用於 Apache Cassandra) cassandra.AWS_region.amazonaws.com
Amazon Kinesis kinesis.AWS_region.amazonaws.com
Amazon 數據 Firehose firehose.AWS_region.amazonaws.com
Amazon Kinesis Video Streams kinesisvideo.AWS_region.amazonaws.com
AWS Lambda lambda.AWS_region.amazonaws.com
Amazon Lex lex.AWS_region.amazonaws.com
AWS License Manager license-manager.AWS_region.amazonaws.com
Amazon Location Service geo.AWS_region.amazonaws.com
Amazon Lookout for Equipment lookoutequipment.AWS_region.amazonaws.com
Amazon Lookout for Metrics lookoutmetrics.AWS_region.amazonaws.com
Amazon Lookout for Vision lookoutvision.AWS_region.amazonaws.com
Amazon Macie macie.AWS_region.amazonaws.com
AWS Mainframe Modernization m2.AWS_region.amazonaws.com
AWS Mainframe Modernization 應用測試 apptest.AWS_region.amazonaws.com
Amazon Managed Blockchain managedblockchain.AWS_region.amazonaws.com
Amazon Managed Streaming for Apache Kafka (Amazon MSK) kafka.AWS_region.amazonaws.com
Amazon Managed Workflows for Apache Airflow (MWAA) airflow.AWS_region.amazonaws.com
Amazon MemoryDB for Redis memorydb.AWS_region.amazonaws.com
Amazon Monitron monitron.AWS_region.amazonaws.com
Amazon MQ mq.AWS_region.amazonaws.com
Amazon Neptune rds.AWS_region.amazonaws.com
Amazon Nimble Studio nimble.AWS_region.amazonaws.com
AWS HealthOmics omics.AWS_region.amazonaws.com
Amazon OpenSearch 服務 es.AWS_region.amazonaws.com, aoss.AWS_region.amazonaws.com
AWS Proton proton.AWS_region.amazonaws.com
Amazon Quantum Ledger Database (Amazon QLDB) qldb.AWS_region.amazonaws.com
Amazon RDS Performance Insights rds.AWS_region.amazonaws.com
Amazon Redshift redshift.AWS_region.amazonaws.com
Amazon Redshift 查詢編輯器第 2 版 sqlworkbench.AWS_region.amazonaws.com
Amazon Redshift Serverless redshift-serverless.AWS_region.amazonaws.com
Amazon Rekognition rekognition.AWS_region.amazonaws.com
Amazon Relational Database Service (Amazon RDS) rds.AWS_region.amazonaws.com
Amazon Replicated Data Store ards.AWS_region.amazonaws.com
Amazon SageMaker sagemaker.AWS_region.amazonaws.com
AWS Secrets Manager secretsmanager.AWS_region.amazonaws.com
Amazon Security Lake securitylake.AWS_region.amazonaws.com
Amazon Simple Email Service (Amazon SES) ses.AWS_region.amazonaws.com
Amazon Simple Notification Service (Amazon SNS) sns.AWS_region.amazonaws.com
Amazon Simple Queue Service (Amazon SQS) sqs.AWS_region.amazonaws.com
Amazon Simple Storage Service (Amazon S3) s3.AWS_region.amazonaws.com
AWS Snowball importexport.AWS_region.amazonaws.com
AWS Step Functions states.AWS_region.amazonaws.com
AWS Storage Gateway storagegateway.AWS_region.amazonaws.com
AWS Systems Manager Incident Manager ssm-incidents.AWS_region.amazonaws.com
AWS Systems Manager Incident Manager 联系人 ssm-contacts.AWS_region.amazonaws.com
Amazon Timestream timestream.AWS_region.amazonaws.com
Amazon Translate translate.AWS_region.amazonaws.com
AWS Verified Access verified-access.AWS_region.amazonaws.com
Amazon WorkMail workmail.AWS_region.amazonaws.com
Amazon WorkSpaces workspaces.AWS_region.amazonaws.com
Amazon WorkSpaces 瘦客戶端 thinclient.AWS_region.amazonaws.com
Amazon WorkSpaces 網站 workspaces-web.AWS_region.amazonaws.com
AWS X-Ray xray.AWS_region.amazonaws.com

公里:WrappingAlgorithm

AWS KMS 條件鍵 條件類型 值類型 API 操作 Policy type (政策類型)

kms:WrappingAlgorithm

字串

單一值

GetParametersForImport

金鑰政策和 IAM 政策

此條件索引鍵會根據要求中的WrappingAlgorithm參數值控制對GetParametersForImport作業的存取。您可以使用此條件,要求主體在匯入過程中使用特定的演算法來加密金鑰材料。在指定不同的包裝演算法時,要求所需的公有金鑰和匯入符記會失敗。

下列範例金鑰政策陳述式會使用 kms:WrappingAlgorithm 條件索引鍵來提供範例使用者呼叫 GetParametersForImport 操作的​許可,但會防止他們使用 RSAES_OAEP_SHA_1 包裝演算法。GetParametersForImport 請求中的 WrappingAlgorithmRSAES_OAEP_SHA_1 時,操作會失敗。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:GetParametersForImport", "Resource": "*", "Condition": { "StringNotEquals": { "kms:WrappingAlgorithm": "RSAES_OAEP_SHA_1" } } }

另請參閱

公里:WrappingKeySpec

AWS KMS 條件鍵 條件類型 值類型 API 操作 Policy type (政策類型)

kms:WrappingKeySpec

字串

單一值

GetParametersForImport

金鑰政策和 IAM 政策

此條件索引鍵會根據要求中的WrappingKeySpec參數值控制對GetParametersForImport作業的存取。您可以使用此條件,要求主體在匯入過程中使用特定類型的公開金鑰。如果請求指定不同的金鑰類型,它會失敗。

由於 WrappingKeySpec 參數值的唯一有效值是 RSA_2048,防止使用者使用此值可以有效避免他們使用 GetParametersForImport 操作。

以下範例政策陳述式使用 kms:WrappingAlgorithm 條件金鑰,要求請求中的 WrappingKeySpec 必須是 RSA_4096

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:GetParametersForImport", "Resource": "*", "Condition": { "StringEquals": { "kms:WrappingKeySpec": "RSA_4096" } } }

另請參閱