别名是用户主密钥的可选标识。

别名在一个阿里云账号、一个地域中具有唯一性。同一个阿里云账号在不同地域下可以拥有相同的别名。 每个别名只能指向同地域的一个用户主密钥,但是每个用户主密钥可以拥有多个别名。

一个别名一定会指向一个用户主密钥,但是别名是独立于用户主密钥存在的一个资源。别名具有以下特点:

  • 可以调用UpdateAlias接口更改别名关联的用户主密钥,而不会影响用户主密钥。
  • 删除别名不会删除其关联的用户主密钥。
  • RAM用户操作别名,需要有别名相关资源的授权。详情请参见使用RAM实现访问控制
  • 别名不可更改。可以通过为一个用户主密钥创建新的别名,并且删除旧的别名来达到修改别名的目的。

当一个别名与某一个用户主密钥相关联时,在以下操作中,可以将访问参数中的密钥ID用别名代替:

  • DescribeKey
  • Encrypt
  • GenerateDataKey
  • GenerateDataKeyWithoutPlaintext

当RAM用户使用别名代替密钥ID进行上述操作时,RAM用户必须拥有对应密钥的权限,无需拥有对应别名的权限。

您可以对别名进行以下操作:

任何情况下使用别名时,都必须使用完整的别名,示例如下。

//包含前缀“alias/”的完整别名
alias/example

创建别名

  • 别名必须拥有前缀alias/。除前缀以外,支持字母、数字、下划线(_)、短划线(-)以及斜杠(/)。除前缀以外,长度限制在1~255个字符。
  • 当RAM用户创建别名时,需要同时拥有别名以及其关联密钥的权限。
  • 为同一个用户主密钥创建新的别名不会影响已有别名。
  • 您可以调用CreateAlias接口创建别名。
//创建别名的RAM Policy示例:用户123456可以为密钥08ec3bb9-034f-485b-b1cd-3459baa8****创建别名alias/example
{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "kms:CreateAlias"
      ],
      "Resource": [
        "acs:kms:cn-hangzhou:123456:key/08ec3bb9-034f-485b-b1cd-3459baa8****",
        "acs:kms:cn-hangzhou:123456:alias/example"
      ]
    }
  ]
}

//创建别名
aliyun kms CreateAlias --KeyId 08ec3bb9-034f-485b-b1cd-3459baa8**** --AliasName alias/example

更新别名

  • 更新别名可以将已有的别名关联到其他用户主密钥,您可以调用UpdateAlias接口更新别名。
  • 当RAM用户更新别名时,需要同时拥有原密钥、目标密钥以及别名的权限。
//更新别名的RAM Policy示例:用户123456可以将密钥08ec3bb9-034f-485b-b1cd-3459baa8****关联的别名alias/example管理到新密钥127d2f84-ee5f-4f4d-9d41-dbc1aca28788
{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "kms:UpdateAlias"
      ],
      "Resource": [
        "acs:kms:cn-hangzhou:123456:key/08ec3bb9-034f-485b-b1cd-3459baa8****",
        "acs:kms:cn-hangzhou:123456:key/127d2f84-ee5f-4f4d-9d41-dbc1aca2****",
        "acs:kms:cn-hangzhou:123456:alias/example"
      ]
    }
  ]
}

//更新别名
aliyun kms UpdateAlias --AliasName alias/example --KeyId 127d2f84-ee5f-4f4d-9d41-dbc1aca2****

删除别名

  • 删除别名不会影响其关联的密钥,您可以调用DeleteAlias接口删除别名。
  • 当RAM用户删除别名时,需要同时拥有别名以及其关联密钥的权限。
//删除别名的RAM Policy示例:用户123456可以删除别名alias/example,其关联的密钥是127d2f84-ee5f-4f4d-9d41-dbc1aca2****
{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "kms:DeleteAlias"
      ],
      "Resource": [
        "acs:kms:cn-hangzhou:123456:key/127d2f84-ee5f-4f4d-9d41-dbc1aca2****",
        "acs:kms:cn-hangzhou:123456:alias/example"
      ]
    }
  ]
}

//删除别名
aliyun kms DeleteAlias --AliasName alias/example

列出别名

  • 列出别名可以获取所有的别名信息,您可以调用ListAliases接口列出别名。
  • 当RAM用户访问别名时,需要拥有别名资源类型的权限。
//列出别名的RAM Policy示例
{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "kms:ListeAliases"
      ],
      "Resource": [
        "acs:kms:cn-hangzhou:123456:alias"
      ]
    }
  ]
}

//列出别名
aliyun kms ListAliases

列出指定密钥关联的别名

  • 列出指定密钥关联的别名只会返回与指定密钥相关联的别名信息,您可以调用ListAliasesByKeyId接口列出指定密钥关联的别名。
  • 当RAM用户列出与指定密钥关联的别名时,只需拥有指定密钥的权限即可访问。
//出指定密钥关联的别名的RAM Policy示例:列出密钥127d2f84-ee5f-4f4d-9d41-dbc1aca2****关联的所有别名
{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "kms:DeleteAlias"
      ],
      "Resource": [
        "acs:kms:cn-hangzhou:123456:key/127d2f84-ee5f-4f4d-9d41-dbc1aca2****"
      ]
    }
  ]
}

//列出指定密钥关联的别名
aliyun kms ListAliasesByKeyId --KeyId 127d2f84-ee5f-4f4d-9d41-dbc1aca2****