AWS KMS 條件索引鍵 - AWS Key Management Service

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

AWS KMS 條件索引鍵

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

API操作請求的條件

許多 AWS KMS 條件索引鍵會根據 AWS KMS 操作請求中的參數值來控制對KMS索引鍵的存取。例如,您可以在IAM政策中使用 kms:KeySpec 條件索引鍵,以允許在CreateKey請求中的 KeySpec 參數值為 時使用 CreateKey 操作RSA_4096

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

API操作中使用的KMS金鑰條件

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

該操作必須是KMS金鑰資源操作 ,即授權給特定KMS金鑰的操作。若要識別KMS關鍵資源操作,請在 動作與資源 資料表 KMS key 中,尋找 操作資料Resources欄中的值。如果您將這種類型的條件索引鍵與未獲得特定KMS索引鍵資源授權的操作搭配使用,例如 ListKeys,則許可無效,因為永遠無法滿足條件。授權ListKeys操作不會涉及KMS任何金鑰資源,也不會涉及KeySpec任何屬性。

下列主題描述每個 AWS KMS 條件索引鍵,並包含示範政策語法的政策陳述式範例。

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

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

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

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

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

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

警告

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

如果您建立或更新包含具有 kms:EncryptionContext:context-keyaws:RequestTag/tag-key 條件索引鍵的ForAllValues集合運算子的政策, 會 AWS KMS 傳回下列錯誤訊息:

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參數值為 時建立KMS金鑰的許可,以防止使用者略過政策鎖定安全檢查 true.

{ "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關鍵資源操作,請在 動作與資源 資料表 KMS key 中,尋找操作資料Resources欄中的值 。其也適用於管理自訂金鑰存放的操作。

例如,以下金鑰政策陳述式示範了如何使用 kms:CallerAccount 條件索引鍵。此政策陳述式位於 AWS 受管金鑰 適用於 Amazon 的 金鑰政策中EBS。它結合了指定所有 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金鑰對中使用公有金鑰加密 AWS KMS。

EncryptionAlgorithm 請求中的 參數

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

與允許使用者使用特定加密演算法的政策陳述式不同,具有像這樣的雙重負數的政策陳述式可防止其他政策和授予此KMS金鑰,以允許此角色使用其他加密演算法。此金鑰政策陳述式Deny中的 優先於IAM具有 Allow 效力的任何金鑰政策,且優先於此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_,否則其拒絕存取範例帳戶中的任何KMS金鑰DEFAULT。包含GenerateDataKeyPairWithoutPlaintextGenerateDataKeyGenerateDataKeyWithoutPlaintextGenerateDataKeyPairGenerateDataKey*新增至 許可。條件對這些操作沒有影響,因為其一律使用對稱式加密演算法。

{ "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" } } }

另請參閱

kms:EncryptionContext:context-key

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金鑰HMACKMS金鑰 的密碼編譯操作中指定加密內容。非對稱演算法和MAC演算法不支援加密內容。

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

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

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

"kms:EncryptionContext:AppName": "ExampleApp"

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

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

警告

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

如果您建立或更新包含具有 kms:EncryptionContext:context-keyForAllValues集合運算子的政策, 會 AWS KMS 傳回下列錯誤訊息:

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 運算子搭配使用。

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

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

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

若要要求加密內容對並禁止所有其他加密內容對,請在政策陳述式kms:EncryptionContextKeys中使用 kms:EncryptionContext:context-key 和 。以下範例政策陳述式使用 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金鑰。如果請求中的加密內容包含Stage=Restricted加密內容對,則下列範例金鑰政策陳述式會使用 Deny效果來禁止主體使用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:context-key 條件索引鍵的運算子。使用具有單一值條件索引鍵的集合運算子可能會導致政策允許沒有加密內容和未指定加密內容對的請求。

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

請檢閱您的政策,並使用 kms:EncryptionContext:context-key 將集運算子從任何條件中消除。嘗試使用此格式建立或更新政策會失敗,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" } } }

若要要求特定加密對並排除所有其他加密內容對,請在政策陳述式kms:EncryptionContextKeys中使用 kms:EncryptionContext:context-key 和 。下列金鑰政策陳述式使用 kms:EncryptionContext:context-key 條件來要求 Department=IT Project=Alpha對的加密內容。它會將 kms:EncryptionContextKeys 條件索引鍵與 ForAllValues 集合運算子搭配使用,以僅允許 DepartmentProject 加密內容索引鍵。

ForAllValues 集合運算子將請求中的加密內容索引鍵限制為 DepartmentProject。如果單獨使用於 條件,此集運算子會允許沒有加密內容的請求,但在此組態中,此條件中的 kms:EncryptionContext:context-key 會失敗。

{ "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" ] } } }

您也可以禁止多個加密內容對。如果請求中的加密內容包含 Stage=RestrictedStage=Production.pair,則下列範例金鑰政策陳述式會使用 Deny效果來禁止主體使用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" } } }

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

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

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

例如,在以下範例政策陳述式中,因為 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政策變數。您不能在金鑰中使用變數。

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

如同所有變數,這些變數只能用於 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金鑰HMACKMS金鑰 的密碼編譯操作中指定加密內容。非對稱演算法和MAC演算法不支援加密內容。

注意

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

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

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

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

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

例如,此金鑰政策陳述式允許具有兩個加密內容對、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條件索引鍵要求特定過期日期作為存取的條件。

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

{ "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 政策

您可以使用此條件金鑰,根據請求中的授予限制類型控制對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操作時CreateGrant,才允許或拒絕 ListGrants、 或 操作的許可。此政策條件不允許使用者直接呼叫這些授予操作。

以下範例金鑰政策陳述式會使用 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 當請求中沒有授予操作,但CreateGrant不允許時, 也會傳回 true。如果 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金鑰的授予。

若要指定承授者主體,請使用主體的 AWS Amazon Resource Name (ARN)。有效的主體包括 AWS 帳戶、IAM使用者、IAM角色、聯合身分使用者和擔任的角色使用者。如需主體ARN語法的協助,請參閱 使用者指南IAMARNs中的 。 IAM

下列範例金鑰政策陳述式使用 kms:GranteePrincipal 條件金鑰來建立KMS金鑰的授予,但前提是授予中的承授者主體是 LimitedAdminRole

{ "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

例如,除非 KeyAgreementAlgorithm是 , DeriveSharedSecret 否則下列金鑰政策陳述式會使用 kms:KeyAgreementAlgorithm 條件金鑰來拒絕對 的所有存取ECDH

{ "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 叢集中產生金鑰材料時,或只有在金鑰材料從外部來源 (AWS_CLOUDHSM) 匯入時,您才能建立金鑰EXTERNAL匯入金鑰的 AWS KMS 金鑰材料

下列範例金鑰政策陳述式使用 kms:KeyOrigin 的條件金鑰,僅在建立KMS金鑰材料時 AWS 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關鍵資源操作,請在 動作與資源 資料表 KMS key 中,尋找 操作資料Resources欄中的值。

例如,下列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政策中使用此條件索引鍵,根據CreateKey請求中的 KeySpec 參數值來控制對CreateKey操作的存取。例如,您可以使用此條件,允許使用者僅建立對稱加密KMS金鑰或僅建立HMACKMS金鑰。

下列範例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關鍵資源操作,請在 動作與資源 資料表 KMS key 中,尋找 操作資料Resources欄中的值。

例如,下列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_DECRYPTGENERATE_VERIFY_MACSIGN_VERIFYKEY_AGREEMENT

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

下列範例IAM政策陳述式使用 kms:KeyUsage 的條件金鑰,僅在 KeyUsage為 時建立KMS金鑰ENCRYPT_DECRYPT

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

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

例如,下列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_384或 時,才能使用HMACKMS金鑰產生和驗證HMAC標籤HMAC_SHA_512。此政策會使用兩個不同的政策陳述式,每個陳述式都有各自的條件。如果您在單一條件陳述式中指定多個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索引鍵屬性的值,控制對KMS索引鍵 AWS KMS 操作和 CreateKey操作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索引鍵的MultiRegionKeyType屬性,控制對 AWS KMS KMS索引鍵和 CreateKey操作的存取。有效值為 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 條件金鑰,只有在目的地金鑰與原始加密所用的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 條件索引鍵DescribeKey會根據在請求中識別該KMS索引鍵的別名,控制對密碼編譯操作GetPublicKey、 或 中使用的索引KMS鍵的存取。(此政策條件不會影響GenerateRandom操作,因為操作不使用KMS金鑰或別名。)

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

若要在此政策條件中指定別名,請使用別名名稱,例如 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

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

別名在 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政策陳述式允許主體在與別名 AWS 帳戶 相關聯的指定 中的任何KMS索引鍵上呼叫 finance-key GenerateDataKey操作。(受影響金鑰的KMS金鑰政策也必須允許主體的帳戶將其用於此操作。) 若要表示當可能與KMS金鑰相關聯的許多別名之一為 時,條件已滿足alias/finance-key,則條件會使用ForAnyValue設定的運算子。

由於kms:ResourceAliases條件是以資源為基礎,而非請求,因此即使請求使用金鑰 ID金鑰ARN來識別KMS金鑰,呼叫 finance-key GenerateDataKey仍會成功與別名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-1ap-southeast-2,或名稱模式,例如 eu-*。如需 AWS 區域 AWS KMS 支援的名稱清單,請參閱 中的AWS Key Management Service 端點和配額 AWS 一般參考。

例如,下列金鑰政策陳述式使用 kms:ReplicaRegion 條件金鑰,允許主體僅在 ReplicaRegion 參數的值為指定區域之一時呼叫 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金鑰。

若要指定淘汰委託人,請使用委託人的 AWS Amazon Resource Name (ARN)。有效的主體包括 AWS 帳戶、IAM使用者、IAM角色、聯合身分使用者和擔任的角色使用者。如需主體ARN語法的說明,請參閱 使用者指南IAMARNs中的 。 IAM

下列範例金鑰政策陳述式可讓使用者為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 and Verify 操作的存取。此條件索引鍵不會影響在 之外執行的操作 AWS KMS,例如在 以外的非對稱索引鍵對中使用公有索引KMS鍵驗證簽章 AWS KMS。

下列金鑰政策範例允許使用者擔任testers角色,只有在用於請求的簽署演算法為 RSASSA_PSS 演算法時,才能使用KMS金鑰來簽署訊息,例如 RSASSA_PSS_SHA512

{ "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 參數無效。您也可以使用 km: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關鍵資源操作,請在 動作與資源 資料表 KMS key 中,尋找 操作資料Resources欄中的值。

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

{ "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 KMS 加密 AWS

  • 使用整合服務的許可。如需讓使用者存取與 整合 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 Bedrock 模型複製 bedrock.AWS_region.amazonaws.com
Amazon Chime SDK chimevoiceconnector.AWS_region.amazonaws.com
AWS Clean Rooms ML cleanrooms-ml.AWS_region.amazonaws.com
AWS CodeArtifact codeartifact.AWS_region.amazonaws.com
Amazon CodeGuru Reviewer 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 Data 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 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 Service es.AWS_region.amazonaws.com, aoss.AWS_region.amazonaws.com
AWS Proton proton.AWS_region.amazonaws.com
Amazon Quantum Ledger 資料庫 (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 Web 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" } } }

另請參閱