首页 日志服务 开发参考 访问控制RAM RAM自定义授权场景

RAM自定义授权场景

更新时间: 2023-10-26 15:09:09

本文介绍常见的自定义授权场景和授权策略。

重要
  • 权限策略中的Logstore包括Logstore和MetricStore。当您的操作对象为MetricStore时,如下策略同样适用。
  • 基于安全考虑,建议您为RAM用户授予最小可用权限。通常情况下,您需要为RAM用户授予Project列表的只读权限,否则RAM用户无法进入Project列表查看资源。更多信息,请参见系统授权策略创建自定义权限策略

控制台场景

  • Project只读权限
    例如使用阿里云账号授予RAM用户以下权限:
    • RAM用户具备当前阿里云账号下的Project列表的查看权限。
    • RAM用户具备当前阿里云账号下指定的Project的只读权限。
    说明 如果只授予Project只读权限,则该RAM用户仍无权限查看Project下的日志,还需授予Logstore只读权限。
    同时满足上述权限的权限策略如下:
    {
       "Version": "1",
       "Statement": [
         {
           "Action": ["log:ListProject"],
           "Resource": ["acs:log:*:*:project/*"],
           "Effect": "Allow"
          },
         {
           "Action": [
             "log:Get*",
             "log:List*"
           ],
           "Resource": "acs:log:*:*:project/<指定的Project名称>/*",
           "Effect": "Allow"
         }
       ]
     }
  • 指定Logstore的只读权限和快速查询的创建、使用权限
    例如使用阿里云账号授予RAM用户以下权限:
    • RAM用户具备当前阿里云账号下的Project列表的查看权限。
    • RAM用户具备指定的Logstore的只读权限,同时具备创建并管理快速查询的权限。
    同时满足上述权限的权限策略如下:
    {
      "Version": "1",
      "Statement": [
        {
          "Action": [
            "log:ListProject"
          ],
          "Resource": "acs:log:*:*:project/*",
          "Effect": "Allow"
        },
        {
          "Action": [
            "log:List*"
          ],
          "Resource": "acs:log:*:*:project/<指定的Project名称>/logstore/*",
          "Effect": "Allow"
        },
        {
          "Action": [
            "log:Get*",
            "log:List*"
          ],
          "Resource": [
            "acs:log:*:*:project/<指定的Project名称>/logstore/<指定的Logstore名称>"
          ],
          "Effect": "Allow"
        },
        {
          "Action": [
            "log:List*"
          ],
          "Resource": [
            "acs:log:*:*:project/<指定的Project名称>/dashboard",
            "acs:log:*:*:project/<指定的Project名称>/dashboard/*"
          ],
          "Effect": "Allow"
        },
        {
          "Action": [
            "log:Get*",
            "log:List*",
            "log:Create*"
          ],
          "Resource": [
            "acs:log:*:*:project/<指定的Project名称>/savedsearch",
            "acs:log:*:*:project/<指定的Project名称>/savedsearch/*"
          ],
          "Effect": "Allow"
        }
      ]
    }
  • 指定Logstore的只读权限及指定Project中快速查询和仪表盘的只读权限
    例如使用阿里云账号授予RAM用户以下权限:
    • RAM用户具备当前阿里云账号下的Project列表的查看权限。
    • RAM用户具备指定的Logstore的只读权限,同时具备查看该Logstore所属的Project中所有的快速查询和仪表盘列表的权限。
    同时满足上述权限的权限策略如下:
    {
      "Version": "1",
      "Statement": [
        {
          "Action": [
            "log:ListProject"
          ],
          "Resource": "acs:log:*:*:project/*",
          "Effect": "Allow"
        },
        {
          "Action": [
            "log:List*"
          ],
          "Resource": "acs:log:*:*:project/<指定的Project名称>/logstore/*",
          "Effect": "Allow"
        },
        {
          "Action": [
            "log:Get*",
            "log:List*"
          ],
          "Resource": [
            "acs:log:*:*:project/<指定的Project名称>/logstore/<指定的Logstore名称>"
          ],
          "Effect": "Allow"
        },
        {
          "Action": [
            "log:Get*",
            "log:List*"
          ],
          "Resource": [
            "acs:log:*:*:project/<指定的Project名称>/dashboard",
            "acs:log:*:*:project/<指定的Project名称>/dashboard/*"
          ],
          "Effect": "Allow"
        },
        {
          "Action": [
            "log:Get*",
            "log:List*"
          ],
          "Resource": [
            "acs:log:*:*:project/<指定的Project名称>/savedsearch",
            "acs:log:*:*:project/<指定的Project名称>/savedsearch/*"
          ],
          "Effect": "Allow"
        }
      ]
    }

API场景

  • 指定Project的写入权限
    授予RAM用户向指定Project写入数据的权限,不包含查询等其他操作权限。
    {
      "Version": "1",
      "Statement": [
        {
          "Action": [
            "log:Post*"
          ],
          "Resource": "acs:log:*:*:project/<指定的project名称>/*",
          "Effect": "Allow"
        }
      ]
    }
  • 指定Logstore的写入权限

    授予RAM用户向指定Logstore写入数据的权限,不包含查询等其他操作权限。

    权限策略中的Logstore包括了Logstore和MetricStore。当您的操作对象为MetricStore时,如下策略同样适用。

    {
      "Version":"1",
      "Statement":[
        {
          "Effect":"Allow",
          "Action":[
            "log:PostLogStoreLogs"
          ],
          "Resource":[
            "acs:log:*:*:project/<指定的Project名称>/logstore/<指定的Logstore名称>"
          ]
        }
      ]
    }
  • 指定Project的消费权限
    授予RAM用户消费指定Project数据的权限,不包含数据写入、查询等其他操作权限。
    {
      "Version": "1",
      "Statement": [
        {
          "Action": [
            "log:ListShards",
            "log:GetCursorOrData",
            "log:GetConsumerGroupCheckPoint",
            "log:UpdateConsumerGroup",
            "log:ConsumerGroupHeartBeat",
            "log:ConsumerGroupUpdateCheckPoint",
            "log:ListConsumerGroup",
            "log:CreateConsumerGroup"
          ],
          "Resource": "acs:log:*:*:project/<指定的project名称>/*",
          "Effect": "Allow"
        }
      ]
    }
  • 指定Logstore的消费权限
    授予RAM用户消费指定Logstore数据的权限,不包含数据写入、查询等其他操作权限。
    {
      "Version": "1",
      "Statement": [
        {
          "Action": [
            "log:ListShards",
            "log:GetCursorOrData",
            "log:GetConsumerGroupCheckPoint",
            "log:UpdateConsumerGroup",
            "log:ConsumerGroupHeartBeat",
            "log:ConsumerGroupUpdateCheckPoint",
            "log:ListConsumerGroup",
            "log:CreateConsumerGroup"
          ],
          "Resource": [
            "acs:log:*:*:project/<指定的project名称>/logstore/<指定的Logstore名称>",
            "acs:log:*:*:project/<指定的project名称>/logstore/<指定的Logstore名称>/*"
          ],
          "Effect": "Allow"
        }
      ]
    }
  • 指定Logstore必须启用加密配置
    授予RAM用户该权限策略后,RAM用户创建或者修改Logstore时必须指定加密配置。 未授予该权限策略的RAM用户,创建或修改Logstore时可以不指定加密配置。
    说明 您可以自行指定Project名称和Logstore名称,也可以用星号(*)进行模糊匹配。
    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "log:CreateLogStore",
            "log:UpdateLogStore"
          ],
          "Resource": [
            "acs:log:*:*:project/<指定的Project名称>/logstore/<指定的Logstore名称>",
            "acs:log:*:*:project/<指定的project名称>/logstore/*"
          ],
          "Condition": {
            "Bool": {
              "log:Encrypted": "true"
            }
          }
        }
      ]
    }

更多参考

阿里云首页 日志服务 相关技术圈