条件キーは、認可が有効である状況を指定する。 キーポリシー、シークレットポリシー、およびカスタムRAMポリシーで条件キーを定義して、KMSへのアクセスを管理できます。 このトピックでは、Alibaba Cloudの共通条件キーとKMS固有の条件キーについて説明します。
キーおよび秘密ポリシーの場合、Principalフィールドは必須です。 ただし、カスタムRAMポリシーの場合、このフィールドは省略できます。
Alibaba Cloud共通条件キー
acs:SourceIp
条件キー | 説明 | 条件操作タイプ | API 操作 | 値の範囲 | ポリシータイプ |
acs:SourceIp | ユーザーリクエストのクライアントIPアドレス。パブリックIPアドレスのみが含まれます。 | String | KMSのすべてのOpenAPI操作。 具体的なリストについては、「APIの概要」をご参照ください。 | IPアドレス。 設定例:
|
|
RAMポリシーの例
要求がIPアドレス範囲116.62.XX.XX/24
から発信された場合にのみ、データキーの生成を許可します。
{
"Statement": [
{
"Action": "kms:GenerateDataKey",
"Effect": "Allow",
"Resource": "*",
"Condition": {
"IpAddress": {
"acs:SourceIp": "116.62.XX.XX/24"
}
}
}
],
"Version": "1"
}
キー /秘密ポリシーの例
RAMユーザーramuser1およびIPアドレス203.0.XX.XXからのみアクセスを許可します。
{
"Version":"1",
"Statement":[
{
"Sid":"kms policy",
"Effect":"Allow",
"Action":"kms:*",
"Principal":{
"RAM":[
"acs:ram::1192853035****:user/ramuser1"
]
},
"Resource":"*",
"Condition":{
"IpAddress":{
"acs:SourceIp":[
"203.0.XX.XX"
]
}
}
}
]
}
acs:SourceVpc
条件キー | 説明 | 条件操作タイプ | API 操作 | 値の範囲 | ポリシータイプ |
acs:SourceVpc | ユーザーリクエストのクライアントが属するVPC。 この条件キーは、リクエストがAlibaba Cloud VPCネットワークから送信された場合にのみ有効です。 | String | KMSのすべてのOpenAPI操作。 具体的なリストについては、「APIの概要」をご参照ください。 | VPC ID たとえば、vpc-bp1717bgs34gj **** 。 |
|
制限事項
ポリシーの
Statement
フィールドのすべてのアクションは、kms:
で始まる必要があります。たとえば、"Action":"kms:*"
または"Action":"kms:GenerateDataKey"
です。"Action":"*"
または"Action":"k *"
の使用は許可されていません。この条件キーは、特定のリージョンでのみ使用できます。
キー /秘密ポリシーの例: RAMユーザーramuser1とvpc-bp1l8j1t3l3j5 **** からのみアクセスを許可します。
{
"Version": "1",
"Statement": [
{
"Sid": "kms policy",
"Effect": "Allow",
"Action": "kms:*",
"Principal": {
"RAM": [
"acs:ram::1192853035****:user/ramuser1"
]
},
"Resource": "*",
"Condition": {
"StringEquals": {
"acs:SourceVpc": [
"vpc-bp1l8j1t3l3j5****"
]
}
}
}
]
}
acs:VpcSourceIp
条件キー | 説明 | 条件操作タイプ | API 操作 | 値の範囲 | ポリシータイプ |
acs:VpcSourceIp | ユーザーリクエストのクライアントIPアドレス。 この条件キーは、リクエストがAlibaba Cloud VPCネットワークから送信された場合にのみ有効です。 | String | KMSのすべてのOpenAPI操作。 具体的なリストについては、「APIの概要」をご参照ください。 | VPC内のIPアドレス。 設定例:
|
|
制限: この条件キーは、特定のリージョンでのみ使用できます。
RAMポリシーの例
172.168.XX.XX/24
CIDRブロック内のvpc-bp1717bghfnkqg5wn ****
からのリクエストのみを許可します。
{
"Statement": [
{
"Action": "kms:GenerateDataKey",
"Effect": "Allow",
"Resource": "*",
"Condition": {
"StringEquals": {
"acs:SourceVpc": "vpc-bp1717bghfnkqg5wn****"
},
"IpAddress": {
"acs:VpcSourceIp": "172.168.**.**/24"
}
}
}
],
"Version": "1"
}
キー /秘密ポリシーの例
RAMユーザーramuser1およびVPC IPアドレス192.168.XX.XXからのみアクセスを許可します。
{
"Version": "1",
"Statement": [
{
"Sid": "kms policy",
"Effect": "Allow",
"Action": "kms:*",
"Principal": {
"RAM": [
"acs:ram::1192853035****:user/ramuser1"
]
},
"Resource": "*",
"Condition": {
"IpAddress": {
"acs:VpcSourceIp": [
"192.168.XX.XX"
]
}
}
}
]
}
acs:SecureTransport
条件キー | 説明 | 条件操作タイプ | API 操作 | 値の範囲 | ポリシータイプ |
acs:SecureTransport | リクエストの送信にセキュアチャネル (HTTPS) を使用するかどうかを指定します。 | Boolean | KMSのすべてのOpenAPI操作。 具体的なリストについては、「APIの概要」をご参照ください。 |
|
|
RAMポリシーの例
操作が安全なトランスポートプロトコル (HTTPS) を介して行われる場合、ユーザーはすべてのKMSリソースに対して任意の操作を実行できます。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "kms:*",
"Resource": "*",
"Condition": {
"Bool": {
"acs:SecureTransport": "true"
}
}
}
]
}
キー /秘密ポリシーの例
セキュアチャネル (HTTPS) を介してRAMユーザーramuser1にのみアクセスを許可します。
{
"Version": "1",
"Statement": [
{
"Sid": "kms policy",
"Effect": "Allow",
"Action": "kms:*",
"Principal": {
"RAM": [
"acs:ram::1192853035****:user/ramuser1"
]
},
"Resource": "*",
"Condition": {
"Bool": {
"acs:SecureTransport": "true"
}
}
}
]
}
acs:CurrentTime
条件キー | 説明 | 条件操作タイプ | API 操作 | 値の範囲 | ポリシータイプ |
acs:CurrentTime | サーバーがリクエストを受信した時刻。 | 日付と時刻 | KMSのすべてのOpenAPI操作。 具体的なリストについては、「APIの概要」をご参照ください。 | ISO 8601標準で時間を指定します。 時刻は UTC である必要があります。 たとえば、2024年1月10日の20:00:00では、北京時間は |
|
キー /秘密ポリシーの例: 2099-12-31T12:00:00ZまでRAMユーザーramuser1にのみアクセスを許可します。
{
"Version": "1",
"Statement": [
{
"Sid": "kms policy",
"Effect": "Allow",
"Action": "kms:*",
"Principal": {
"RAM": [
"acs:ram::1192853035****:user/ramuser1"
]
},
"Resource": "*",
"Condition": {
"DateLessThan": {
"acs:CurrentTime": "2099-12-31T12:00:00Z"
}
}
}
]
}
acs:MFAPresent
条件キー | 説明 | 条件操作タイプ | API 操作 | 値の範囲 | ポリシータイプ |
acs:MFAPresent | ユーザーログイン中に多要素認証 (MFA) を使用するかどうかを指定します。 | Boolean | KMSのすべてのOpenAPI操作。 具体的なリストについては、「APIの概要」をご参照ください。 |
|
|
キー /秘密ポリシーの例: 多要素認証 (MFA) がアクティブな場合、RAMユーザーramuser1にのみアクセスを許可します。
{
"Version": "1",
"Statement": [
{
"Sid": "kms policy",
"Effect": "Allow",
"Action": "kms:*",
"Principal": {
"RAM": [
"acs:ram::1192853035****:user/ramuser1"
]
},
"Resource": "*",
"Condition": {
"Bool": {
"acs:MFAPresent": [
"true"
]
}
}
}
]
}
KMSプロダクト条件キー (キー関连)
kms: タグ
条件キー | 説明 | 条件操作タイプ | API 操作 | 値の範囲 | ポリシータイプ |
kms: タグ | キータグに基づいてAPI操作の権限を管理できます。 | String |
| カスタムキータグ。 |
|
kms:EncryptionAlgorithm
条件キー | 説明 | 条件操作タイプ | API 操作 | 値の範囲 | ポリシータイプ |
kms:EncryptionAlgorithm | リクエストの暗号化アルゴリズムに基づいて、暗号化操作の権限を管理できます。 | String |
| SYMMETRIC_DEFAULT、RSAES_OAEP_SHA_256、およびECIES_DH_SHA_1_XOR_HMACなどの暗号化アルゴリズム。 KMSでサポートされている暗号化アルゴリズムの詳細については、「キー管理タイプとキー仕様」をご参照ください。 |
|
たとえば、次のポリシーでは、RAMユーザーキー_ramuser1
のみがRSAES_OAEP_SHA_256アルゴリズムを使用して暗号化、復号化、または再暗号化操作を実行できるようにし、暗号化キーの安全で準拠した使用を保証します。
{
"Sid": "Allow only one encryption algorithm with this asymmetric KMS key",
"Effect": "Deny",
"Principal": {
"RAM": [
"acs:ram::119285303511****:user/key_ramuser1"
]
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt"
],
"Resource": "*",
"Condition": {
"StringNotEquals": {
"kms:EncryptionAlgorithm": "SYMMETRIC_DEFAULT"
}
}
}
kms:EncryptionContext :${ EncryptionContextKey}
条件キー | 説明 | 条件操作タイプ | API 操作 | 値の範囲 | ポリシータイプ |
kms:EncryptionContext :${ EncryptionContextKey} | 暗号化操作の暗号化コンテキストに基づいて、KMSの対称キーに対する権限を管理できます。 暗号化コンテキストのキーと値のペアに基づいて権限を設定できます。 | String |
| カスタム暗号化コンテキスト。 |
|
たとえば、次のポリシーでは、Alibaba Cloudアカウント119285303511 ****
に関連付けられているすべてのRAMユーザーが、Project
の値 (kms:EncryptionContext
) がProjectA
の場合、データキー (kms:GenerateDataKey
) を生成できます。
{
"Effect": "Allow",
"Principal": {
"RAM": [
"acs:ram::119285303511****:*"
]
},
"Action": "kms:GenerateDataKey",
"Resource": "*",
"Condition": {
"StringEquals": {
"kms:EncryptionContext:Project": "ProjectA"
}
}
}
kms:EncryptionContextKeys
条件キー | 説明 | 条件操作タイプ | API 操作 | 値の範囲 | ポリシータイプ |
kms:EncryptionContextKeys | 暗号化操作の暗号化コンテキストに基づいて、KMSの対称キーに対する権限を管理できます。 暗号化コンテキストのキーに基づいて権限を設定できます。 | 文字列の配列 |
| EncryptionContextに含まれるキーと値のペアのキー。 | キーポリシー |
たとえば、次のポリシーでは、暗号化コンテキストにキー名Project
が存在する場合、Alibaba Cloudアカウント119285303511 ****
に関連付けられているすべてのRAMユーザーがデータキー (kms:GenerateDataKey
) を生成できます。
{
"Effect": "Allow",
"Principal": {
"RAM": [
"acs:ram::119285303511****:*"
]
},
"Action": "kms:GenerateDataKey",
"Resource": "*",
"Condition": {
"StringEquals": {
"kms:EncryptionContextKeys": "Project"
}
}
}
kms:ExpirationModel
条件キー | 説明 | 条件操作タイプ | API 操作 | 値の範囲 | ポリシータイプ |
kms:ExpirationModel | リクエストのExpirationModelパラメーターの値に基づいて、ImportKeyMaterial操作のアクセス許可を管理できます。 | String | ImportKeyMaterial |
|
|
たとえば、次のポリシーでは、キーマテリアルの有効期限モデルがKEY_MATERIAL_DOES_NOT_EXPIRE
の場合にのみ、Alibaba Cloudアカウント119285303511 ****
に関連付けられているすべてのRAMユーザーがキーマテリアル (kms:ImportKeyMaterial
) をインポートできます。
{
"Effect": "Allow",
"Principal": {
"RAM": "acs:ram::119285303511****:*"
},
"Action": "kms:ImportKeyMaterial",
"Resource": "*",
"Condition": {
"StringEquals": {
"kms:ExpirationModel": "KEY_MATERIAL_DOES_NOT_EXPIRE"
}
}
}
kms:ValidTo
条件キー | 説明 | 条件操作タイプ | API 操作 | 値の範囲 | ポリシータイプ |
kms:ValidTo | リクエストのValidToパラメーターの値に基づいて、ImportKeyMaterial操作の権限を管理できます。 条件キーを使用すると、特定の日付より前にのみキーマテリアルをインポートできるようになります。 | 日付 | ImportKeyMaterial | UNIXタイムスタンプ |
|
たとえば、次のポリシーでは、Alibaba Cloudアカウント119285303511 ****
に関連付けられているすべてのRAMユーザーは、2024年6月20日より前にのみキーマテリアルをインポートできます。
{
"Effect": "Allow",
"Principal": {
"RAM": "acs:ram::119285303511****:*"
},
"Action": "kms:ImportKeyMaterial",
"Resource": "*",
"Condition": {
"NumericLessThanEquals": {
"kms:ValidTo": "1718841600"
}
}
}
kms:KeyOrigin
条件キー | 説明 | 条件操作タイプ | API 操作 | 値の範囲 | ポリシータイプ |
kms:KeyOrigin | 操作で作成または使用されるキーのOrigin属性に基づいて、API操作のアクセス許可を管理できます。 条件キーを使用して、CreateKey操作またはキー関連操作のアクセス許可を管理できます。 | String | すべてのキー関連操作。 具体的なリストについては、「APIの概要」をご参照ください。 |
|
|
kms:KeySpec
条件キー | 説明 | 条件操作タイプ | API 操作 | 値の範囲 | ポリシータイプ |
kms:KeySpec | 操作で作成または使用されるキーのKeySpec属性に基づいて、API操作のアクセス許可を管理できます。 | String | すべてのキー関連操作。 具体的なリストについては、「APIの概要」をご参照ください。 | キー仕様。 例: Aliyun_AES_256およびRSA_2048。 KMSでサポートされているキー仕様の詳細については、「キー管理タイプとキー仕様」をご参照ください。 |
|
たとえば、次のポリシーは、Alibaba Cloudアカウント119285303511 ****
に関連付けられているすべてのRAMユーザーとロールがキー (kms:CreateKey
) を作成することを許可しますが、作成はRSAキーのみに制限します。
{
"Effect": "Allow",
"Action": "kms:CreateKey",
"Principal": {
"RAM": "acs:ram::119285303511****:*"
},
"Resource": "*",
"Condition": {
"StringLike": {
"kms:KeySpec": "RSA_*"
}
}
}
kms:KeyUsage
条件キー | 説明 | 条件操作タイプ | API 操作 | 値の範囲 | ポリシータイプ |
kms:KeyUsage | 操作で作成または使用されるキーのKeyUsage属性に基づいて、API操作のアクセス許可を管理できます。 | String | すべてのキー関連操作。 具体的なリストについては、「APIの概要」をご参照ください。 |
|
|
たとえば、次のポリシーでは、キー (kms:CreateKey
) の作成が許可されていますが、ENCRYPT_DECRYPT
のみが許可されています。
{
"Effect": "Allow",
"Action": "kms:CreateKey",
"Resource": "*",
"Condition": {
"StringEquals": {
"kms:KeyUsage": "ENCRYPT_DECRYPT"
}
}
}
kms:ScheduleKeyDeletionPendingWindowInDays
条件キー | 説明 | 条件操作タイプ | API 操作 | 値の範囲 | ポリシータイプ |
kms:ScheduleKeyDeletionPendingWindowInDays | リクエストのPendingWindowInDaysパラメーターの値に基づいて、ScheduleKeyDeletion操作のアクセス許可を管理できます。 | 数値 | ScheduleKeyDeletion | キーの削除予定期間。 単位:日 |
|
たとえば、次のポリシーは、保留中の削除ウィンドウが21日以内の場合、すべてのユーザーとロールがキーの削除をスケジュールすることを拒否します (kms:ScheduleKeyDeletion
) 。
{
"Effect": "Deny",
"Action": "kms:ScheduleKeyDeletion",
"Principal": "*",
"Resource": "*",
"Condition": {
"NumericLessThanEquals": {
"kms:ScheduleKeyDeletionPendingWindowInDays": "21"
}
}
}
kms:SigningAlgorithm
条件キー | 説明 | 条件操作タイプ | API 操作 | 値の範囲 | ポリシータイプ |
kms:SigningAlgorithm | リクエストの署名アルゴリズムに基づいて、署名および検証操作の権限を管理できます。 | String |
| 署名アルゴリズム。 例: RSA_PSS_SHA_256およびECDSA_SHA_256。 サポートされている署名アルゴリズムの詳細については、「キー管理タイプとキー仕様」をご参照ください。 |
|
kms:WrappingAlgorithm
条件キー | 説明 | 条件操作タイプ | API 操作 | 値の範囲 | ポリシータイプ |
kms:WrappingAlgorithm | リクエストのWrappingAlgorithmパラメーターの値に基づいて、GetParametersForImport操作のアクセス許可を管理できます。 | String | GetParametersForImport | ラッピングアルゴリズム。 KMSでサポートされているラッピングアルゴリズムの詳細については、「対称キーマテリアルのインポート」および「非対称キーマテリアルのインポート」をご参照ください。 |
|
kms:WrappingKeySpec
条件キー | 説明 | 条件操作タイプ | API 操作 | 値の範囲 | ポリシータイプ |
kms:WrappingKeySpec | リクエストのWrappingKeySpecパラメーターの値に基づいて、GetParametersForImport操作のアクセス許可を管理できます。 | String | GetParametersForImport | ラッピング公開鍵の型。 KMSでサポートされている公開キータイプのラッピングの詳細については、「対称キーマテリアルのインポート」および「非対称キーマテリアルのインポート」をご参照ください。 |
|
KMSプロダクト条件キー (シークレット関連)
kms: タグ
条件キー | 説明 | 条件操作タイプ | API 操作 | 値の範囲 | ポリシータイプ |
kms: タグ | シークレットタグに基づいてAPI操作の権限を管理できます。 | String |
| カスタム秘密タグ。 |
|
kms:SecretName
条件キー | 説明 | 条件操作タイプ | API 操作 | 値の範囲 | ポリシータイプ |
kms:SecretName | リクエストのSecretnameパラメーターの値に基づいて、API操作のアクセス許可を管理できます。 | String | すべての秘密関連の操作。 具体的なリストについては、「APIの概要」をご参照ください。 | カスタム秘密名。 |
|
kms:EncryptionKeyId
条件キー | 説明 | 条件操作タイプ | API 操作 | 値の範囲 | ポリシータイプ |
kms:EncryptionKeyId | シークレットアクセス要求の暗号化キーのIDに基づいて、API操作の権限を管理できます。 | String |
| キーID。 |
|
kms:SecretVersionId
条件キー | 説明 | 条件操作タイプ | API 操作 | 値の範囲 | ポリシータイプ |
kms:SecretVersionId | リクエスト内の一意のシークレットバージョンIDに基づいて、API操作の権限を管理できます。 | String |
| シークレットのバージョン番号。 |
|
kms:SecretVersionStage
条件キー | 説明 | 条件操作タイプ | API 操作 | 値の範囲 | ポリシータイプ |
kms:SecretVersionStage | リクエストのシークレットバージョンのステータスに基づいて、API操作のアクセス許可を管理できます。 | String |
|
|
|
kms:SecretType
条件キー | 説明 | 条件操作タイプ | API 操作 | 値の範囲 | ポリシータイプ |
kms:SecretType | リクエストのシークレットの種類に基づいて、API操作のアクセス許可を管理できます。 | String | すべての秘密関連の操作。 具体的なリストについては、「APIの概要」をご参照ください。 |
|
|
kms:ForceDeleteWithoutRecovery
条件キー | 説明 | 条件操作タイプ | API 操作 | 値の範囲 | ポリシータイプ |
kms:ForceDeleteWithoutRecovery | シークレットを強制削除するかどうかを指定します。 このパラメーターがtrueに設定されている場合、シークレットは復元できません。 | ブール値 | DeleteSecret |
|
|
kms:RecoveryWindowInDays
条件キー | 説明 | 条件操作タイプ | API 操作 | 値の範囲 | ポリシータイプ |
kms:RecoveryWindowInDays | シークレットを強制的に削除しない場合の回復期間を指定します。 単位:日 | 数値 | DeleteSecret | 日数。 |
|
たとえば、次のポリシーは、回復ウィンドウが10日以内に設定されている場合、すべてのユーザーとロールのkms:DeleteSecret
操作を拒否します。
{
"Statement": [
{
"Effect": "Deny",
"Action": "kms:DeleteSecret",
"Principal": "*",
"Resource": "*",
"Condition": {
"NumericLessThanEquals": {
"kms:RecoveryWindowInDays": "10"
}
}
}
]
}
KMSプロダクト条件キー (その他)
kms:TlsVersion
条件キー | 説明 | 条件操作タイプ | API 操作 | 値の範囲 | ポリシータイプ |
kms:TlsVersion | リクエストのTLSバージョンに基づいてAPI操作の権限を管理できます。 | String | すべての認証関連の操作。 説明 認証を含まないAPI: たとえば、DescribeRegions。 | 1.2 |
|
たとえば、次のポリシーは、リクエスト内のTLSバージョンが1.2を下回る場合、指定されたキーに対する操作を拒否します。
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action": "kms:*",
"Resource": "acs:kms:*:*:key/key-hzz653f1f8fybn5qa****",
"Condition": {
"NumericLessThan": {
"kms:TlsVersion": [
"1.2"
]
}
}
}
]
}
付録1: 条件操作タイプの説明
条件付き演算子は、文字列、数字、日付と時刻、ブール値、およびIPアドレスのカテゴリに分類できます。
カテゴリ | 条件付き演算子 |
String |
|
Number |
|
日付と時刻 |
|
Boolean | Bool |
IP アドレス |
|