本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 為此定義了兩個集運算子 ForAllValues
ForAnyValue
和 。使用僅具有所需多重值條件索引鍵的集合運算子。請勿將集合運算子與單一值條件索引鍵搭配使用。如往常一樣,在生產環境中使用之前,完整測試您的政策陳述式。
條件索引鍵是單一值或多重值。若要判斷 AWS KMS 條件索引鍵是單值還是多值,請參閱條件索引鍵描述中的值類型欄。
-
單一值條件索引鍵在授權內容 (請求或資源) 中最多有一個值。例如,因為每次API呼叫只能源自一個 AWS 帳戶, kms:CallerAccount 是單一的數值條件索引鍵。請勿使用具有單一值條件索引鍵的集合運算子。
-
單一值條件索引鍵在授權內容 (請求或資源) 中有多個值。例如,由於每個KMS金鑰可以有多個別名,因此 kms:ResourceAliases 可以有多個值。多重值條件索引鍵需要集合運算子。
請注意,單一值和多重值條件索引鍵之間的差異取決於授權內容中值的數目;而非政策條件中值的數目。
警告
將集合運算子搭配單一值條件索引鍵使用,可以建立過度寬鬆 (或過度限制) 的政策陳述式。只能將集合運算子與多值條件索引鍵搭配使用。
如果您建立或更新包含具有 kms:EncryptionContext:context-key 或 aws: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.
如需 ForAnyValue
和 ForAllValues
設定運算子的詳細資訊,請參閱 IAM 使用者指南 中的使用多個金鑰和值。如需使用具有單一值條件之ForAllValues
集合運算子的風險資訊,請參閱 IAM 使用者指南 中的安全警告 – ForAllValues 使用單一值索引鍵。
主題
- 公里:BypassPolicyLockoutSafetyCheck
- 公里:CallerAccount
- 公里:CustomerMasterKeySpec(已棄用)
- 公里:CustomerMasterKeyUsage(已棄用)
- 公里:DataKeyPairSpec
- 公里:EncryptionAlgorithm
- kms:EncryptionContext:context-key
- 公里:EncryptionContextKeys
- 公里:ExpirationModel
- 公里:GrantConstraintType
- 公里:GrantIsForAWSResource
- 公里:GrantOperations
- 公里:GranteePrincipal
- 公里:KeyAgreementAlgorithm
- 公里:KeyOrigin
- 公里:KeySpec
- 公里:KeyUsage
- 公里:MacAlgorithm
- 公里:MessageType
- 公里:MultiRegion
- 公里:MultiRegionKeyType
- 公里:PrimaryRegion
- 公里:ReEncryptOnSameKey
- 公里:RequestAlias
- 公里:ResourceAliases
- 公里:ReplicaRegion
- 公里:RetiringPrincipal
- 公里:RotationPeriodInDays
- 公里:ScheduleKeyDeletionPendingWindowInDays
- 公里:SigningAlgorithm
- 公里:ValidTo
- 公里:ViaService
- 公里:WrappingAlgorithm
- 公里:WrappingKeySpec
公里:BypassPolicyLockoutSafetyCheck
AWS KMS 條件索引鍵 | 條件類型 | 值類型 | API 操作 | Policy type (政策類型) |
---|---|---|---|---|
|
Boolean |
單一值 |
|
僅限 IAM 政策 金鑰政策和 IAM 政策 |
kms:BypassPolicyLockoutSafetyCheck
條件索引鍵會根據請求中的 BypassPolicyLockoutSafetyCheck
參數值,控制對 CreateKey和 PutKeyPolicy操作的存取。
下列範例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 金鑰資源操作 自訂金鑰存放操作 |
金鑰政策和 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:CustomerMasterKeySpec
和 kms:KeySpec
條件索引鍵的運作方式相同。只有名稱不同。建議您使用 kms:KeySpec
。不過,為了避免中斷變更, AWS KMS 支援兩個條件索引鍵。
公里:CustomerMasterKeyUsage(已棄用)
kms:CustomerMasterKeyUsage
條件索引鍵已被取代。請改用 kms:KeyUsage 條件索引鍵。
kms:CustomerMasterKeyUsage
和 kms:KeyUsage
條件索引鍵的運作方式相同。只有名稱不同。建議您使用 kms:KeyUsage
。不過,為了避免中斷變更, AWS KMS 支援兩個條件索引鍵。
公里:DataKeyPairSpec
AWS KMS 條件索引鍵 | 條件類型 | 值類型 | API 操作 | Policy type (政策類型) |
---|---|---|---|---|
|
字串 |
單一值 |
|
金鑰政策和 IAM 政策 |
您可以使用此條件金鑰,根據請求中的 KeyPairSpec
參數值來控制對 GenerateDataKeyPair和 GenerateDataKeyPairWithoutPlaintext操作的存取。例如,您可以允許使用者產生僅限特定類型的資料金鑰對。
下列範例金鑰政策陳述式使用 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 (政策類型) |
---|---|---|---|---|
|
字串 |
單一值 |
|
金鑰政策和 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。包含GenerateDataKeyPairWithoutPlaintext將 GenerateDataKey、GenerateDataKeyWithoutPlaintext、 GenerateDataKeyPair和 GenerateDataKey*
新增至 許可。條件對這些操作沒有影響,因為其一律使用對稱式加密演算法。
{ "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 (政策類型) |
---|---|---|---|---|
|
字串 |
單一值 |
|
金鑰政策和 IAM 政策 |
您可以使用 kms:EncryptionContext:context-key
條件金鑰,根據密碼編譯操作 請求中的加密內容來控制對對稱加密KMS金鑰的存取。使用此條件索引鍵可同時評估加密內容對中的金鑰和值。若要僅評估加密內容金鑰,或無論金鑰或值為何都需要加密內容,請使用 kms:EncryptionContextKeys 條件金鑰。
注意
您無法在具有非對稱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
集合運算子,則條件會允許沒有加密內容的請求,以及未在政策條件中指定的加密內容對的請求。
警告
請勿將 ForAnyValue
或 ForAllValues
集合運算子與此單一值條件索引鍵搭配使用。這些集合運算子可以建立不需要您想要要求之值的政策條件,並允許您想要禁止的值。
如果您建立或更新包含具有 kms:EncryptionContext:context-key 的ForAllValues
集合運算子的政策, 會 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使用者指南中的使用多個索引鍵或值建立條件。
注意
此主題的早期版本會顯示政策陳述式,這些陳述式使用 ForAnyValue
和 ForAllValues
設定具有 kms:EncryptionContext:context-key 條件索引鍵的運算子。使用具有單一值條件索引鍵的集合運算子可能會導致政策允許沒有加密內容和未指定加密內容對的請求。
例如,政策條件具有 Allow
效果、ForAllValues
集合運算子和 "kms:EncryptionContext:Department": "IT"
條件索引鍵不會將加密內容限制為 "Department=IT" 對。它允許沒有加密內容的請求和未指定加密內容對的請求,例如 Stage=Restricted
。
請檢閱您的政策,並使用 kms:EncryptionContext:context-key 將集運算子從任何條件中消除。嘗試使用此格式建立或更新政策會失敗,OverlyPermissiveCondition
為例外狀況。若要解決錯誤,請刪除集合運算子。
若要要求多個加密內容對,請以相同的條件列出對。以下範例金鑰政策陳述式需要兩個加密內容對,Department=IT
和 Project=Alpha
。由於條件具有不同的金鑰 (kms:EncryptionContext:Department
和 kms: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
集合運算子搭配使用,以僅允許 Department
和 Project
加密內容索引鍵。
ForAllValues
集合運算子將請求中的加密內容索引鍵限制為 Department
和 Project
。如果單獨使用於 條件,此集運算子會允許沒有加密內容的請求,但在此組態中,此條件中的 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=Restricted
或 Stage=Production
.pair,則下列範例金鑰政策陳述式會使用 Deny
效果來禁止主體使用KMS金鑰。
相同索引鍵 (kms:EncryptionContext:Stage
) 的多個值 (Restricted
和 Production
) 由 OR 隱式連線。如需詳細資訊,請參閱 IAM 使用者指南 中的評估邏輯,了解具有多個金鑰或值的條件。
{ "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:Stage": [ "Restricted", "Production" ] } } }
加密內容條件需區分大小寫
解密操作中指定的加密內容和加密操作中指定的加密內容必須完全一樣,且大小寫相符。只有具有多對之加密內容中的配對順序可以改變。
不過,在政策條件中,條件金鑰不區分大小寫。條件值是否區分大小寫,取決於您使用的政策條件運算子,例如 StringEquals
或 StringEqualsIgnoreCase
。
因此, 條件索引鍵由 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 (政策類型) |
---|---|---|---|---|
|
字串 (清單) |
多重值 |
|
金鑰政策和 IAM 政策 |
您可以使用 kms:EncryptionContextKeys
條件金鑰,根據密碼編譯操作請求中的加密內容來控制對對稱加密KMS金鑰的存取。使用此條件索引鍵,只評估每個加密內容對中的金鑰。若要同時評估加密內容中的金鑰和值,請使用 kms:EncryptionContext:context-key
條件索引鍵。
您無法在具有非對稱KMS金鑰或HMACKMS金鑰 的密碼編譯操作中指定加密內容。非對稱演算法和MAC演算法不支援加密內容。
注意
這是多重值條件索引鍵。您可以在每個API請求中指定多個加密內容對。 會將請求中的加密內容金鑰與政策中的一組加密內容金鑰kms:EncryptionContextKeys
進行比較。若要判斷這些集合的比較方式,您必須提供政策條件中的 ForAnyValue
或 ForAllValues
集合運算子。如需集運算子的詳細資訊,請參閱 IAM 使用者指南中的使用多個金鑰和值。
-
ForAnyValue
:請求中至少有一個加密內容索引鍵必須符合政策條件中的加密內容索引鍵。允許使用其他加密內容索引鍵。如果請求沒有加密內容,則不符合條件。 -
ForAllValues
:請求中每個加密內容索引鍵必須符合政策條件中的加密內容索引鍵。此集合運算子會將加密內容索引鍵限制為政策條件中的索引鍵。它不需要任何加密內容索引鍵,但它禁止未指定的加密內容索引鍵。
以下範例金鑰政策陳述式將 kms:EncryptionContextKeys
條件索引鍵與 ForAnyValue
集合運算子搭配使用。此政策陳述式允許將KMS金鑰用於指定的操作,但前提是請求中至少一個加密內容對包含AppName
金鑰,無論其值為何。
例如,此金鑰政策陳述式允許具有兩個加密內容對、AppName=Helper
和 Project=Alpha
的 GenerateDataKey
請求,因為第一個加密內容對符合條件。僅具有 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 (政策類型) |
---|---|---|---|---|
|
字串 |
單一值 |
|
金鑰政策和 IAM 政策 |
kms:ExpirationModel
條件索引鍵會根據請求中的 ExpirationModel 參數值來控制對 ImportKeyMaterial 操作的存取。
ExpirationModel
是選擇性參數,用來決定匯入的金鑰材料是否過期。有效值為 KEY_MATERIAL_EXPIRES
和 KEY_MATERIAL_DOES_NOT_EXPIRE
。KEY_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 (政策類型) |
---|---|---|---|---|
|
字串 |
單一值 |
|
金鑰政策和 IAM 政策 |
您可以使用此條件金鑰,根據請求中的授予限制類型控制對CreateGrant操作的存取。
建立授與時,您可以選擇指定授與限制以允許操作,僅在特定加密內容存在時才授與許可。授與限制可以是兩種類型其中之一:EncryptionContextEquals
或 EncryptionContextSubset
。您可以使用此條件金鑰來檢查請求是否包含其中一個類型。
重要
請勿在此欄位包含機密或敏感資訊。此欄位可以在 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 (政策類型) |
---|---|---|---|---|
|
Boolean |
單一值 |
|
金鑰政策和 IAM 政策 |
只有在AWS 與 整合的服務 AWS KMS
以下範例金鑰政策陳述式會使用 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 (政策類型) |
---|---|---|---|---|
|
字串 |
多重值 |
|
金鑰政策和 IAM 政策 |
您可以使用此條件金鑰,根據請求中的授予CreateGrant操作來控制對操作的存取。 授予操作例如,您可以允許使用者建立授予,以委派加密 (但不是解密) 的許可。如需授予的詳細資訊,請參閱使用授予。
這是多重值條件索引鍵。kms:GrantOperations
會將 CreateGrant
請求中的一組授予操作與政策中的一組授予操作進行比較。若要判斷這些集合的比較方式,您必須提供政策條件中的 ForAnyValue
或 ForAllValues
集合運算子。如需集運算子的詳細資訊,請參閱 IAM 使用者指南中的使用多個金鑰和值。
-
ForAnyValue
:請求中至少有一個授予操作必須符合政策條件中的其中一個授予操作。允許其他授予操作。 -
ForAllValues:請求中的每個授予操作都必須符合政策條件中的授予操作。此集合運算子會將授予操作限制為政策條件中指定的操作。它不需要任何授予操作,但它禁止未指定的授予操作。
ForAllValues 當請求中沒有授予操作,但
CreateGrant
不允許時, 也會傳回 true。如果Operations
參數遺失或具有空值時,則CreateGrant
請求會失敗。
以下範例政策陳述式使用 kms:GrantOperations
條件索引鍵,僅當授予操作為 Encrypt
、ReEncryptTo
或兩者時,才允許建立授予。如果授予包含任何其他操作,則 CreateGrant
請求會失敗。
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Encrypt", "ReEncryptTo" ] } } }
如果您將政策條件中的集合運算子變更為 ForAnyValue
,則政策陳述式會要求授予中至少有一個授予操作為 Encrypt
或 ReEncryptTo
,但它會允許其他授予操作,例如 Decrypt
或 ReEncryptFrom
。
另請參閱
公里:GranteePrincipal
AWS KMS 條件索引鍵 | 條件類型 | 值類型 | API 操作 | Policy type (政策類型) |
---|---|---|---|---|
|
字串 |
單一值 |
|
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 (政策類型) |
---|---|---|---|---|
|
字串 |
單一值 |
|
金鑰政策和 IAM 政策 |
您可以使用 kms:KeyAgreementAlgorithm
條件金鑰,根據請求中的 KeyAgreementAlgorithm
參數值來控制對 DeriveSharedSecret 操作的存取。的唯一有效值KeyAgreementAlgorithm
是 ECDH
。
例如,除非 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 金鑰資源操作 |
IAM 政策 金鑰政策和 IAM 政策 |
kms:KeyOrigin
條件索引鍵會根據由 建立或用於 操作的索引KMS鍵Origin
屬性值來控制對 操作的存取。以資源條件或請求條件運作。
您可以使用此條件金鑰,根據請求中的 Origin 參數值來控制對CreateKey操作的存取。Origin
的有效值為 AWS_KMS
、AWS_CLOUDHSM
和 EXTERNAL
。
例如,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 金鑰資源操作 |
IAM 政策 金鑰政策和 IAM 政策 |
kms:KeySpec
條件索引鍵會根據由 操作建立或操作中使用的索引KMS鍵KeySpec
屬性值來控制對操作的存取。
您可以在IAM政策中使用此條件索引鍵,根據CreateKey
請求中的 KeySpec 參數值來控制對CreateKey操作的存取。例如,您可以使用此條件,允許使用者僅建立對稱加密KMS金鑰或僅建立HMACKMS金鑰。
下列範例IAM政策陳述式使用 kms:KeySpec
條件索引鍵,允許主體僅建立RSA非對稱索引KMS鍵。僅在請求中的 KeySpec
以 RSA_
開頭時,許可才有效。
{ "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 金鑰資源操作 |
IAM 政策 金鑰政策和 IAM 政策 |
kms:KeyUsage
條件索引鍵會根據由 操作建立或操作中使用的索引KMS鍵KeyUsage
屬性值來控制對操作的存取。
您可以使用此條件金鑰,根據請求中的 KeyUsage 參數值來控制對CreateKey操作的存取。的有效值KeyUsage
為 ENCRYPT_DECRYPT
、GENERATE_VERIFY_MAC
、 SIGN_VERIFY
和 KEY_AGREEMENT
。
例如,只有在 KeyUsage
是 ENCRYPT_DECRYPT
或拒絕使用者許可時,您才能建立KMS金鑰KeyUsage
SIGN_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 (政策類型) |
---|---|---|---|---|
|
字串 |
單一值 |
|
金鑰政策和 IAM 政策 |
您可以使用 kms:MacAlgorithm
條件金鑰,根據請求中的 MacAlgorithm
參數值來控制對 GenerateMac和 VerifyMac操作的存取。
下列範例金鑰政策允許擔任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 (政策類型) |
---|---|---|---|---|
|
字串 |
單一值 |
|
金鑰政策和 IAM 政策 |
根據請求中的 MessageType
參數值,kms:MessageType
條件索引鍵會控制對 Sign 和 Verify 操作的存取。MessageType
的有效值為 RAW
和 DIGEST
。
例如,下列金鑰政策陳述式會使用 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 (政策類型) |
---|---|---|---|---|
|
Boolean |
單一值 |
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 金鑰資源操作 |
金鑰政策和 IAM 政策 |
您可以使用此條件索引鍵,僅允許對多區域主要金鑰的操作,或僅允許對多區域複本金鑰的操作。kms:MultiRegionKeyType
條件索引鍵會根據KMS索引鍵的MultiRegionKeyType
屬性,控制對 AWS KMS KMS索引鍵和 CreateKey操作的存取。有效值為 PRIMARY
和 REPLICA
。只有多區域金鑰具有 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 (政策類型) |
---|---|---|---|---|
|
字串 (清單) |
單一值 |
|
金鑰政策和 IAM 政策 |
您可以使用此條件索引鍵來限制 UpdatePrimaryRegion 操作中的目的地區域。這些 AWS 區域 是可以託管多區域主金鑰的金鑰。
kms:PrimaryRegion
條件索引鍵會根據 PrimaryRegion
參數的值控制對 UpdatePrimaryRegion 操作的存取。PrimaryRegion
參數會指定要提升為主要 AWS 區域 的多區域複本金鑰的 。條件的值是一或多個 AWS 區域 名稱,例如 us-east-1
或 ap-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 (政策類型) |
---|---|---|---|---|
|
Boolean |
單一值 |
|
金鑰政策和 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 (政策類型) |
---|---|---|---|---|
|
字串 (清單) |
單一值 |
金鑰政策和 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" } } }
您無法使用此條件金鑰來控制別名操作的存取,例如 CreateAlias或 DeleteAlias。如需控制對別名操作之存取的詳細資訊,請參閱 控制對別名的存取。
公里:ResourceAliases
AWS KMS 條件索引鍵 | 條件類型 | 值類型 | API 操作 | Policy type (政策類型) |
---|---|---|---|---|
|
字串 (清單) |
多重值 | 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索引鍵相關聯的一組別名與政策中的一組別名進行比較。若要判斷這些集合的比較方式,您必須提供政策條件中的 ForAnyValue
或 ForAllValues
集合運算子。如需集運算子的詳細資訊,請參閱 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 (政策類型) |
---|---|---|---|---|
|
字串 (清單) |
單一值 |
|
金鑰政策和 IAM 政策 |
您可以使用此條件索引鍵來限制主體可以在 AWS 區域 其中複寫多區域索引鍵 的 。kms:ReplicaRegion
條件索引鍵會根據請求中的 ReplicaRegion 參數值來控制對 ReplicateKey 操作的存取。此參數指定為新複本金鑰指定 AWS 區域
。
條件的值是一或多個 AWS 區域 名稱,例如 us-east-1
或 ap-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 (政策類型) |
---|---|---|---|---|
|
字串 (清單) |
單一值 |
|
金鑰政策和 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 (政策類型) |
---|---|---|---|---|
|
數值 |
單一值 |
|
金鑰政策和 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 (政策類型) |
---|---|---|---|---|
|
數值 |
單一值 |
|
金鑰政策和 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 (政策類型) |
---|---|---|---|---|
|
字串 |
單一值 |
|
金鑰政策和 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 (政策類型) |
---|---|---|---|---|
|
時間戳記 |
單一值 |
|
金鑰政策和 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 金鑰資源操作 |
金鑰政策和 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 AppFabric | appfabric. |
Amazon AppFlow | appflow. |
AWS Application Migration Service | mgn. |
Amazon Athena | athena. |
AWS Audit Manager | auditmanager. |
Amazon Aurora | rds. |
AWS Backup | backup. |
AWS Backup 閘道 | backup-gateway. |
Amazon Bedrock 模型複製 | bedrock. |
Amazon Chime SDK | chimevoiceconnector. |
AWS Clean Rooms ML | cleanrooms-ml. |
AWS CodeArtifact | codeartifact. |
Amazon CodeGuru Reviewer | codeguru-reviewer. |
Amazon Comprehend | comprehend. |
Amazon Connect | connect. |
Amazon Connect Customer Profiles | profile. |
Amazon Q in Connect | wisdom. |
AWS Database Migration Service (AWS DMS) | dms. |
AWS Directory Service | directoryservice. |
Amazon DynamoDB | dynamodb. |
Amazon DocumentDB | docdb-elastic. |
Amazon EC2 Systems Manager (SSM) | ssm. |
Amazon Elastic Block Store (Amazon EBS) | ec2. (EBS僅限 ) |
Amazon Elastic Container Registry (Amazon ECR) | ecr. |
Amazon Elastic File System (Amazon EFS) | elasticfilesystem. |
Amazon ElastiCache |
在條件索引鍵值中包含兩個 ViaService 名稱:
|
AWS Elemental MediaTailor | mediatailor. |
AWS 實體解析 | entityresolution. |
Amazon EventBridge | events. |
Amazon FinSpace | finspace. |
Amazon Forecast | forecast. |
Amazon FSx | fsx. |
AWS Glue | glue. |
AWS Ground Station | groundstation. |
Amazon GuardDuty | malware-protection. |
AWS HealthLake | healthlake. |
AWS IoT SiteWise | iotsitewise. |
Amazon Kendra | kendra. |
Amazon Keyspaces (適用於 Apache Cassandra) | cassandra. |
Amazon Kinesis | kinesis. |
Amazon Data Firehose | firehose. |
Amazon Kinesis Video Streams | kinesisvideo. |
AWS Lambda | lambda. |
Amazon Lex | lex. |
AWS License Manager | license-manager. |
Amazon Location Service | geo. |
Amazon Lookout for Equipment | lookoutequipment. |
Amazon Lookout for Metrics | lookoutmetrics. |
Amazon Lookout for Vision | lookoutvision. |
Amazon Macie | macie. |
AWS Mainframe Modernization | m2. |
AWS Mainframe Modernization 應用程式測試 | apptest. |
Amazon Managed Blockchain | managedblockchain. |
Amazon Managed Streaming for Apache Kafka (Amazon MSK) | kafka. |
Amazon Managed Workflows for Apache Airflow (MWAA) | airflow. |
Amazon MemoryDB | memorydb. |
Amazon Monitron | monitron. |
Amazon MQ | mq. |
Amazon Neptune | rds. |
Amazon Nimble Studio | nimble. |
AWS HealthOmics | omics. |
Amazon OpenSearch Service | es. ,
aoss. |
AWS Proton | proton. |
Amazon Quantum Ledger 資料庫 (Amazon QLDB) | qldb. |
Amazon RDS Performance Insights | rds. |
Amazon Redshift | redshift. |
Amazon Redshift 查詢編輯器第 2 版 | sqlworkbench. |
Amazon Redshift Serverless | redshift-serverless. |
Amazon Rekognition | rekognition. |
Amazon Relational Database Service (Amazon RDS) | rds. |
Amazon Replicated Data Store | ards. |
Amazon SageMaker | sagemaker. |
AWS Secrets Manager | secretsmanager. |
Amazon Security Lake | securitylake. |
Amazon Simple Email Service (Amazon SES) | ses. |
Amazon Simple Notification Service (Amazon SNS) | sns. |
Amazon Simple Queue Service (Amazon SQS) | sqs. |
Amazon Simple Storage Service (Amazon S3) | s3. |
AWS Snowball | importexport. |
AWS Step Functions | states. |
AWS Storage Gateway | storagegateway. |
AWS Systems Manager Incident Manager | ssm-incidents. |
AWS Systems Manager Incident Manager 聯絡人 | ssm-contacts. |
Amazon Timestream | timestream. |
Amazon Translate | translate. |
AWS Verified Access | verified-access. |
Amazon WorkMail | workmail. |
Amazon WorkSpaces | workspaces. |
Amazon WorkSpaces 精簡型用戶端 | thinclient. |
Amazon WorkSpaces Web | workspaces-web. |
AWS X-Ray | xray. |
公里:WrappingAlgorithm
AWS KMS 條件索引鍵 | 條件類型 | 值類型 | API 操作 | Policy type (政策類型) |
---|---|---|---|---|
|
字串 |
單一值 |
|
金鑰政策和 IAM 政策 |
此條件索引鍵會根據請求中的 WrappingAlgorithm 參數值來控制對 GetParametersForImport 操作的存取。您可以使用此條件,要求主體在匯入過程中使用特定的演算法來加密金鑰材料。在指定不同的包裝演算法時,要求所需的公有金鑰和匯入符記會失敗。
下列範例金鑰政策陳述式會使用 kms:WrappingAlgorithm
條件索引鍵來提供範例使用者呼叫 GetParametersForImport
操作的許可,但會防止他們使用 RSAES_OAEP_SHA_1
包裝演算法。GetParametersForImport
請求中的 WrappingAlgorithm
是 RSAES_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 (政策類型) |
---|---|---|---|---|
|
字串 |
單一值 |
|
金鑰政策和 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" } } }
另請參閱