子账号访问不同加密参数RAM权限控制

参数仓库可以通过加密参数的形式在云端动态维护加密数据,并且可以供用户随时读取。虽然在调用时参数是以加密的形式来存储和展示的,但是某些用户会有其它类的特殊需求,例如在同一账号下,会有若干阿里云子账号,某些加密数据是不允许所有的子账号可以访问。那么就让我们来参考下本篇文章来给子账号设置不同的加密参数的不同访问权限。

操作步骤

  1. 创建加密参数。

    1. 登录运维编排控制台

    2. 创建加密参数(请参考创建加密参数文档)。20210114180823

    3. 准备两个加密参数group1/parameter、group2/parameter。如下所示:20210114180635

  2. 配置权限策略。

    1. 登录RAM控制台

    2. 创建权限策略。

      在Ram控制台页面,单击权限策略管理 > 创建权限策略。进入添加权限策略详情页面,填写策略名称后,单击脚本配置,将提供的示例脚本内容填充进去。以下示例权限脚本的主要功能为,子账号仅能访问以group1 为开头的加密参数详情,以及获取所有加密参数列表(如果想授予某个子账号可以读取所有加密参数值,请参考附录一:权限策略)。如下所示:

      注意

      加密参数必须配置kms的相关权限。

      {
          "Version": "1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "oos:GetSecretParameter",
                      "oos:ListSecretParameters",
                      "kms:GetSecretValue"
                  ],
                  "Resource": [
                      "acs:oos:*:1234************:secretparameter/group1/*",
                      "acs:kms:*:1234************:secret/oos/group1/*"
                  ],
                  "Condition": {}
              }
          ]
      }
      secret-parameter-03
    3. 将上述创建完成的自定义权限策略赋予给相应的子账号,或授予给相关的权限角色(参考为RAM用户授权为RAM角色授权 来将创建完成的自定义策略给子账号或角色授权)。secret-policy-04

  3. 配置权限策略完成后,验证获取加密参数详情。

    1. 在实例内将AK配置成上述子账号的AK,使用CLI参考获取参数名称为group1/parameter时,此时可以正常获取到加密此参数。20210115113938

    2. 当使用CLI参考尝试获取参数名称为group2/parameter时。此时获取加密参数失败,返回无权限。如下所示:20210115114000

  4. 权限配置结果总结。

    由上面的示例可知,当在权限策略中设置了仅可以访问名称为group1为开头的权限时,并将此权限策略授予某个子账号,此时发现该子账号仅可以获取到名称以group1为起始的加密参数,尝试获取加密参数group2/parameter时,就会显示无权限。

附录一:权限策略

  1. 子账号可以访问所有加密参数。

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "oos:GetSecretParameter",
                    "oos:ListSecretParameters",
                    "kms:GetSecretValue"
                ],
                "Resource": [
                    "acs:oos:*:1234************:secretparameter/*",
                    "acs:kms:*:1234************:secret/oos/*"
                ],
                "Condition": {}
            }
        ]
    }