全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 智能硬件
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 更多

使用RAM实现KMS资源授权

更新时间:2018-03-30 09:58:57

KMS的资源有两大类型:密钥和别名,每种大类型又可以细分为集合类型与具体的某个资源。不同的资源类型对应不同的操作。用户的主账户对自己的资源拥有完整的操作权限,但是在用户子账户的场景下,是需要通过 RAM 授权的方式,给予子账号操作对应资源的权限。

在了解如何使用 RAM 来授权和访问主密钥之前,请确保您已详细阅读了 RAM 产品文档API文档

RAM中可授权的KMS资源类型

KMS中资源ARN格式如下表

资源类型 ARN
密钥集合 acs:kms:${region-id}:${resource-owner-id}:key
密钥 acs:kms:${region-id}:${resource-owner-id}:key/${key-uuid}
别名集合 acs:kms:${region-id}:${resource-owner-id}:alias
别名 acs:kms:${region-id}:${resource-owner-id}:${fullaliasname}

授权中RAM对应的Action和ARN

资源为集合类型的Action

API Action ARN
CreateKey kms:CreateKey acs:kms:${region-id}:${resource-owner-id}:key
ListKeys kms:ListKeys acs:kms:${region-id}:${resource-owner-id}:key
ListAliases kms:ListAliases acs:kms:${region-id}:${resource-owner-id}:alias

资源为具体的某个资源的Action

  • 通常来说,涉及到具体的某个资源的授权,其Action为”kms:${apiname}”的形式,而ARN对应为该资源的ARN。但是部分别名相关的API涉及到多个资源的情况,在授权的时候需要授权多个ARN
  • 对于具体的资源,ARN支持通配符的形式
    • 所有的密钥ARN:acs:kms:${region-id}:${resource-owner-id}:key/*
    • 所有的别名ARN:acs:kms:${region-id}:${resource-owner-id}:alias/*

与RAM授权无关的API

  • DescribeRegions 与RAM授权无关,子账户无需授权就可以访问该API,同时,如果在RAM中进行拒绝授权(Deny)也不会有影响

KMS常见RAM授权Policy示例

  • 允许访问所有的KMS资源
  1. {
  2. "Version": "1",
  3. "Statement": [
  4. {
  5. "Effect": "Allow",
  6. "Action": [
  7. "kms:*"
  8. ],
  9. "Resource": [
  10. "acs:kms:*:${your user id}:*"
  11. ]
  12. }
  13. ]
  14. }
  • 仅允许访问部分region的资源
  1. {
  2. "Version": "1",
  3. "Statement": [
  4. {
  5. "Effect": "Allow",
  6. "Action": [
  7. "kms:*"
  8. ],
  9. "Resource": [
  10. "acs:kms:cn-hangzhou:${your user id}:*",
  11. "acs:kms:ap-southeast-1:${your user id}:*"
  12. ]
  13. }
  14. ]
  15. }
  • 列出、查看密钥、查看别名与使用密钥权限
  1. {
  2. "Version": "1",
  3. "Statement": [
  4. {
  5. "Effect": "Allow",
  6. "Action": [
  7. "kms:List*",
  8. "kms:DescribeKey",
  9. "kms:Encrypt","kms:Decrypt","kms:GenerateDataKey"
  10. ],
  11. "Resource": [
  12. "acs:kms:*:${your user id}:*"
  13. ]
  14. }
  15. ]
  16. }
  • 允许密钥删除
  1. {
  2. "Version": "1",
  3. "Statement": [
  4. {
  5. "Effect": "Allow",
  6. "Action": [
  7. "kms:ScheduleKeyDeletion"
  8. ],
  9. "Resource": [
  10. "acs:kms:*:${your user id}:key/*"
  11. ]
  12. }
  13. ]
  14. }
本文导读目录