日志服务权限配置问题

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 一. 权限介绍 1. 为什么需要授权 RAM授权 您可以通过RAM创建、管理用户账号(例如员工、系统或应用程序),并控制这些用户账号对您名下资源具有的操作权限。当您的企业存在多用户协同操作资源时,使用RAM可以让您避免与其他用户共享云账号密钥,按需为用户分配最小权限,从而降低您的企业信息安全风险。

一. 权限介绍

1. 为什么需要授权

RAM授权

您可以通过RAM创建、管理用户账号(例如员工、系统或应用程序),并控制这些用户账号对您名下资源具有的操作权限。当您的企业存在多用户协同操作资源时,使用RAM可以让您避免与其他用户共享云账号密钥,按需为用户分配最小权限,从而降低您的企业信息安全风险。
为了更精细地管理和操作日志服务资源,您可以通过阿里云RAM产品为您名下的子账号、日志服务的RAM服务角色和用户角色赋予相应的访问权限。

STS授权

阿里云账号可以通过创建并授权用户角色的方式赋予其他云账号一定的资源权限,其他云账号扮演该角色,并为其名下的RAM用户授予AssumeRole权限之后,其他云账号或其子账号可以通过访问STS接口获取临时AK/Token,调用日志服务API接口。
通过STS授权,您可以使用临时的AK操作,而不用担心AK的泄漏问题,更加安全。

2. 有哪些的授权方式

概览

https://help.aliyun.com/document_detail/29049.html

RAM授权

https://help.aliyun.com/document_detail/47664.html

RAM自定义授权场景

https://help.aliyun.com/document_detail/89676.html

通过STS授权

https://help.aliyun.com/document_detail/47277.html

二. 问题排查

1. 配置保存不成功

1.1 检查是否为json格式

将配置粘贴到https://www.json.cn/中,检查是否有格式错误。

1.2 检查是否和样例的样式匹配

样例参考:https://help.aliyun.com/document_detail/89676.html
检查是否有多个"Action"或多个"Resource"在同一级别下。

2. 配置保存成功提示没有权限

2.1 检查是否配置了对应的权限

通常没有权限报错会提示出需要配置的具体权限,参考提示把相应的action和resource加入到授权的策略中。

{"errorCode": "Unauthorized", "errorMessage": "denied by sts or ram, action: log:GetLogStoreLogs, resource: acs:log:cn-beijing:1641920:project/project_name/logstore/logstore_name", "requestId": "5E01B161A1F9CBE3**"}

如上报错,没有log:GetLogStoreLogs权限,操作如下:

1.找到没有权限的RAM用户(https://ram.console.aliyun.com/users
image

2.点击进入用户的权限管理界面
image

3.点击查看用户的权限策略里是否有对应的权限

action: log:GetLogStoreLogs
resource: acs:log:cn-beijing:1641920*:project/project_name/logstore/logstore_name

image

4.点击修改策略内容,在Statement里添加相应的权限
其中cn-beijing(region)和1641920(aliuid)可以用通配符代替。
点击确定配置生效。

image

2.2 常见无权限场景

2.2.1 无权限设置告警

主要注意第三个,Resource job:
https://help.aliyun.com/document_detail/109663.html

2.2.2 无权限查看服务日志(project概览页提示权限问题)

参考文档最下的授权配置,主要是没有概览页查看服务日志的权限:
https://help.aliyun.com/document_detail/85536.html

2.2.3 无权限投递oss(RAM角色配置问题)

参考文档,RAM角色没有设置对:
https://help.aliyun.com/document_detail/29002.html
参考文档中动图:

image

2.3 sts权限问题

2.3.1 简要介绍

注意:子账号要有 "Action": "sts:AssumeRole" 权限;角色有日志服务的权限。
sts服务代码:

AssumeRoleRequest request = new AssumeRoleRequest();
request.setRoleSessionName("XXX");
request.setRoleArn("XXX");
AssumeRoleResponse response = client.getAcsResponse(request);

其中RoleSessionName为您设置的授权名字(自己定义的)
RoleArn为角色的名字(需要有日志服务的权限)
调用的子账号要有sts:AssumeRole权限

2.3.2 详细说明(获取临时AK和token)

1.创建角色

image

2.为角色添加日志服务的权限

image

3.获取角色的Arn

acs:ram::104**12:role/sts-test

image

4.创建RAM用户(https://ram.console.aliyun.com/users

image

5.为RAM用户添加AliyunSTSAssumeRoleAccess权限

image

6.通过接口获取临时AK/Token

Java代码样例

@Controller
public class DemoController { 
    @ResponseBody    
    @RequestMapping("get")
    public String get(){
        String region = "cn-hangzhou";

        DefaultProfile profile = DefaultProfile._getProfile_(region, "ak_id", "ak_secret");

        IAcsClient client = new DefaultAcsClient(profile);

        AssumeRoleRequest request = new AssumeRoleRequest();

        request.setRoleSessionName("sts-test");

        request.setRoleArn("acs:ram::10412:role/sts-test"**);

        try {

            AssumeRoleResponse response = client.getAcsResponse(request);

            AssumeRoleResponse.Credentials sts = response.getCredentials();

            return sts.getAccessKeyId()+","+sts.getAccessKeySecret()+","+sts.getSecurityToken();

        } catch (Exception e) {

            e.printStackTrace();

        }

        return null;

    }

}

2.4 缓存问题

如果配置正确提示没有权限,很有可能是缓存的问题。
日志服务有很多前端机器,前端机器会缓存用户的权限信息,修改配置后,一部分机器的缓存还没有刷新。
发送请求到有缓存的前端机器上,会提示权限问题,之后机器的权限缓存会刷新一下,这个问题之后会优化解决。

权限缓存刷新工具

刷新1000次:

./sls-refresh-permissions-tool -id accessKeyID -secret accessKeySecret -e endpoint -p project -l logstore -t 1000

相关参数

https://help.aliyun.com/document_detail/29064.html

1.mac版本

https://test-lichao.oss-cn-hangzhou.aliyuncs.com/permissions-tool/darwin/sls-refresh-permissions-tool

2.linux版本

https://test-lichao.oss-cn-hangzhou.aliyuncs.com/permissions-tool/linux/sls-refresh-permissions-tool

3.windows版本

https://test-lichao.oss-cn-hangzhou.aliyuncs.com/permissions-tool/windows/sls-refresh-permissions-tool.exe

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
2月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
|
2月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之配置Logback以在控制台输出日志的问题如何解决
Java应用结构规范问题之配置Logback以在控制台输出日志的问题如何解决
|
2月前
|
存储 Ubuntu Apache
如何在 Ubuntu VPS 上配置 Apache 的日志记录和日志轮转
如何在 Ubuntu VPS 上配置 Apache 的日志记录和日志轮转
35 6
|
2月前
|
存储 Ubuntu 应用服务中间件
如何在 Ubuntu VPS 上配置 Nginx 的日志记录和日志轮转
如何在 Ubuntu VPS 上配置 Nginx 的日志记录和日志轮转
19 4
|
2月前
|
存储 容器
【Azure 事件中心】为应用程序网关(Application Gateway with WAF) 配置诊断日志,发送到事件中心
【Azure 事件中心】为应用程序网关(Application Gateway with WAF) 配置诊断日志,发送到事件中心
|
2月前
|
人工智能
【Azure Application Insights】在Azure Function中启用Application Insights后,如何配置不输出某些日志到AI 的Trace中
【Azure Application Insights】在Azure Function中启用Application Insights后,如何配置不输出某些日志到AI 的Trace中
|
3月前
|
缓存 Java
浅析JAVA日志中的性能实践与原理解释问题之AsyncAppender的配置方式的问题是如何解决的
浅析JAVA日志中的性能实践与原理解释问题之AsyncAppender的配置方式的问题是如何解决的
|
3月前
|
Python
Django日志配置(4)
【7月更文挑战第4天】在Django中配置日志的方法非常简单,只需要在 setting 文件中添加配置项,系统会自动生成相应的日志文件,也可以配置调试时显示内容,报错发送邮件等操作。
69 0
|
3月前
|
消息中间件 NoSQL Kafka
日志收集平台项目nginx、kafka、zookeeper、filebeat搭建的基本配置(2)
日志收集平台项目nginx、kafka、zookeeper、filebeat搭建的基本配置(2)
|
3月前
|
消息中间件 应用服务中间件 Kafka
日志收集平台项目nginx、kafka、zookeeper、filebeat搭建的基本配置(1)
日志收集平台项目nginx、kafka、zookeeper、filebeat搭建的基本配置(1)

相关产品

  • 日志服务
  • 下一篇
    无影云桌面