全部產品
Search
文件中心

Key Management Service:使用RAM實現對資源的存取控制

更新時間:Jul 06, 2024

Key Management Service(Key Management Service)通過存取控制RAM(Resource Access Management)實現對資源的存取控制。本文為您介紹KMS定義的資源類型、操作和策略條件。

阿里雲帳號對自己的資源擁有完整的操作許可權,RAM使用者和RAM角色則需要通過顯式授權擷取對應資源的操作許可權。

在瞭解如何使用RAM授權和訪問主要金鑰之前,請瞭解以下內容:

KMS定義的資源類型

下表列出了KMS定義的所有資源類型以及對應的資源名稱(ARN),用於RAM權限原則的Resource元素。

資源類型ARN
抽象密鑰容器acs:kms:${region}:${account}:key
抽象憑據容器acs:kms:${region}:${account}:secret
抽象別名容器acs:kms:${region}:${account}:alias
抽象認證容器acs:kms:${region}:${account}:certificate
密鑰acs:kms:${region}:${account}:key/${key-id}
憑據acs:kms:${region}:${account}:secret/${secret-name}
別名acs:kms:${region}:${account}:alias/${alias-name}
認證acs:kms:${region}:${account}:certificate/${id}

KMS定義的操作

針對每一個需要進行存取控制的介面,KMS都定義了用於RAM權限原則的操作(Action),通常為kms:<api-name>
說明 DescribeRegions不需要進行存取控制,只要請求可以通過認證校正,即可調用。調用者可以是阿里雲帳號、RAM使用者或RAM角色。

以下表格列出了KMS介面的對應RAM權限原則操作,以及介面所訪問的資源類型。

  • 密鑰服務介面
    KMS介面Action資源類型
    ListKeyskms:ListKeys抽象密鑰容器
    CreateKeykms:CreateKey抽象密鑰容器
    DescribeKeykms:DescribeKey密鑰
    UpdateKeyDescriptionkms:UpdateKeyDescription密鑰
    EnableKeykms:EnableKey密鑰
    DisableKeykms:DisableKey密鑰
    ScheduleKeyDeletionkms:ScheduleKeyDeletion密鑰
    CancelKeyDeletionkms:CancelKeyDeletion密鑰
    GetParametersForImportkms:GetParametersForImport密鑰
    ImportKeyMaterialkms:ImportKeyMaterial密鑰
    DeleteKeyMaterialkms:DeleteKeyMaterial密鑰
    ListAliaseskms:ListAliases抽象別名容器
    CreateAliaskms:CreateAlias別名和密鑰
    UpdateAliaskms:UpdateAlias別名和密鑰
    DeleteAliaskms:DeleteAlias別名和密鑰
    ListAliasesByKeyIdkms:ListAliasesByKeyId密鑰
    CreateKeyVersionkms:CreateKeyVersion密鑰
    DescribeKeyVersionkms:DescribeKeyVersion密鑰
    ListKeyVersionskms:ListKeyVersions密鑰
    UpdateRotationPolicykms:UpdateRotationPolicy密鑰
    Encryptkms:Encrypt密鑰
    Decryptkms:Decrypt密鑰
    ReEncrypt
    • kms:ReEncryptFrom
    • kms:ReEncryptTo
    • kms:ReEncrypt*
    密鑰
    GenerateDataKeykms:GenerateDataKey密鑰
    GenerateDataKeyWithoutPlaintextkms:GenerateDataKeyWithoutPlaintext密鑰
    ExportDataKeykms:ExportDataKey密鑰
    GenerateAndExportDataKeykms:GenerateAndExportDataKey密鑰
    AsymmetricSignkms:AsymmetricSign密鑰
    AsymmetricVerifykms:AsymmetricVerify密鑰
    AsymmetricEncryptkms:AsymmetricEncrypt密鑰
    AsymmetricDecryptkms:AsymmetricDecrypt密鑰
    GetPublicKeykms:GetPublicKey密鑰
  • 憑據管家介面
    KMS 介面Action資源類型
    CreateSecretkms:CreateSecret抽象憑據容器
    ListSecretskms:ListSecrets抽象憑據容器
    DescribeSecretkms:DescribeSecret憑據
    DeleteSecretkms:DeleteSecret憑據
    UpdateSecretkms:UpdateSecret憑據
    RestoreSecretkms:RestoreSecret憑據
    GetSecretValue
    • kms:GetSecretValue
    • kms:Decrypt
    說明 僅當您使用自己建立的CMK作為通用憑據的加密主要金鑰時,需要驗證kms:Decrypt。
    憑據
    PutSecretValue
    • kms:PutSecretValue
    • kms:GenerateDataKey
    說明 僅當您使用自己建立的CMK作為通用憑據的加密主要金鑰時,需要驗證kms:GenerateDataKey。
    憑據
    ListSecretVersionIdskms:ListSecretVersionIds憑據
    UpdateSecretVersionStagekms:UpdateSecretVersionStage憑據
    GetRandomPasswordkms:GetRandomPassword
  • 認證管家介面
    KMS 介面Action資源類型
    CreateCertificatekms:CreateCertificate認證
    UploadCertificatekms:UploadCertificate認證
    GetCertificatekms:GetCertificate認證
    DescribeCertificatekms:DescribeCertificate認證
    UpdateCertificateStatuekms:UpdateCertificateStatue認證
    DeleteCertificatekms:DeleteCertificate認證
    CertificatePrivateKeySignkms:CertificatePrivateKeySign認證
    CertificatePublicKeyVerifykms:CertificatePublicKeyVerify認證
    CertificatePublicKeyEncryptkms:CertificatePublicKeyEncrypt認證
    CertificatePrivateKeyDecryptkms:CertificatePrivateKeyDecrypt認證
  • 標籤管理介面
    KMS 介面Action資源類型
    ListResourceTagskms:ListResourceTags密鑰或憑據
    UntagResourcekms:UntagResource密鑰或憑據
    TagResourcekms:TagResource密鑰或憑據

KMS支援的策略條件

您可以在RAM權限原則中設定條件控制對KMS的訪問,只有當條件滿足時,許可權驗證才能通過。例如:您可以使用acs:CurrentTime條件限制權限原則有效時間。

除了阿里雲全域條件,您也可以使用標籤作為條件關鍵字,限制對EncryptDecryptGenerateDataKey等密碼運算API的使用。條件關鍵字的格式為kms:tag/<tag-key>

更多資訊,請參見權限原則基本元素

常見的授權策略樣本

  • 允許訪問所有的KMS資源
    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "kms:*"
          ],
          "Resource": [
            "*"
          ]
        }
      ]
    }               
  • 密鑰唯讀存取權限,即列出和查看密鑰、查看別名以及使用密鑰許可權。
    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "kms:List*", "kms:Describe*",
            "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey"
          ],
          "Resource": [
            "*"
          ]
        }
      ]
    }             
  • 允許使用含有下欄標籤的密鑰進行密碼運算:
    • 標籤鍵:Project
    • 標籤值:Apollo
    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey"
                ],
                "Resource": [
                    "*"
                ],
                "Condition": {
                    "StringEqualsIgnoreCase": {
                        "kms:tag/Project": [
                            "Apollo"
                        ]
                    }
                }
            }
        ]
    }               
  • 允許以下IP地址存取金鑰:
    • 指定IP位址區段:192.168.0.0/16
    • 指定IP地址:172.16.215.218
    {
      "Version": "1",
      "Statement": [{
        "Effect": "Allow",
        "Action": [
          "kms:*"
        ],
        "Resource": [
          "*"
        ],
        "Condition": {
          "IpAddress": {
            "acs:SourceIp": [
              "192.168.0.0/16",
              "172.16.215.218"
            ]
          }
        }
      }]
    }
  • 憑據唯讀存取權限,即列出和查看憑據、查看憑據版本、查看憑據內容以及產生隨機密碼的許可權。
    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "kms:List*", "kms:Describe*",
            "kms:GetSecretValue", "kms:Decrypt", "kms:GetRandomPassword"
          ],
          "Resource": [
            "*"
          ]
        }
      ]
    }         
  • 認證唯讀存取權限,即列出和查看認證詳情的許可權。
    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
              "kms:List*",
            "kms:Describe*",
            "kms:Get*"
          ],
          "Resource": [
            "*"
          ]
        }
      ]
    }
  • 認證簽名和驗簽許可權,即使用指定認證產生和驗證數位簽章的許可權。
    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "kms:CertificatePrivateKeySign",
            "kms:CertificatePublicKeyVerify"
          ],
          "Resource": [
            "*"
          ]
        }
      ]
    }