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

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

操作步骤

  1. 创建加密参数。

    1. 登录系统运维管理控制台

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

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

  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": {}
            }
        ]
    }
  3. 将上述创建完成的自定义权限策略赋予给相应的子账号,或授予给相关的权限角色(参考为RAM用户授权为RAM角色授权来将创建完成的自定义策略给子账号或角色授权)。

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

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

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

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

附录:权限策略

子账号可以访问所有加密参数:

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