日志服务权限配置问题

本文涉及的产品
日志服务 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日志并进行多维度分析。
目录
相关文章
|
7天前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
100 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
1月前
|
网络协议 Linux Windows
Rsyslog配置不同端口收集不同设备日志
Rsyslog配置不同端口收集不同设备日志
|
1月前
|
开发工具 git
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
35 1
|
1月前
|
数据采集 监控 Java
SpringBoot日志全方位超详细手把手教程,零基础可学习 日志如何配置及SLF4J的使用......
本文是关于SpringBoot日志的详细教程,涵盖日志的定义、用途、SLF4J框架的使用、日志级别、持久化、文件分割及格式配置等内容。
110 0
SpringBoot日志全方位超详细手把手教程,零基础可学习 日志如何配置及SLF4J的使用......
|
3月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
|
3月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之配置Logback以在控制台输出日志的问题如何解决
Java应用结构规范问题之配置Logback以在控制台输出日志的问题如何解决
|
3月前
|
存储 Ubuntu Apache
如何在 Ubuntu VPS 上配置 Apache 的日志记录和日志轮转
如何在 Ubuntu VPS 上配置 Apache 的日志记录和日志轮转
46 6
|
3月前
|
存储 Ubuntu 应用服务中间件
如何在 Ubuntu VPS 上配置 Nginx 的日志记录和日志轮转
如何在 Ubuntu VPS 上配置 Nginx 的日志记录和日志轮转
32 4
|
3月前
|
存储 容器
【Azure 事件中心】为应用程序网关(Application Gateway with WAF) 配置诊断日志,发送到事件中心
【Azure 事件中心】为应用程序网关(Application Gateway with WAF) 配置诊断日志,发送到事件中心
|
3月前
|
人工智能
【Azure Application Insights】在Azure Function中启用Application Insights后,如何配置不输出某些日志到AI 的Trace中
【Azure Application Insights】在Azure Function中启用Application Insights后,如何配置不输出某些日志到AI 的Trace中

相关产品

  • 日志服务