日志服务权限配置问题

简介: 一. 权限介绍 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日志并进行多维度分析。
目录
相关文章
|
1月前
|
监控 Serverless 数据库
Serverless 应用引擎常见问题之biphon-education-配置了SLS后一直重启如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
28 5
|
1月前
|
存储 JSON 监控
可以通过配置Filebeat来将Higress日志持久化到磁盘
【2月更文挑战第10天】可以通过配置Filebeat来将Higress日志持久化到磁盘
29 4
|
2月前
|
Java
flume的log4j.properties配置说明
flume的log4j.properties配置说明
|
4月前
|
Java Spring
spring boot 配置log4j 日志
spring boot 配置log4j 日志
71 0
|
4月前
|
监控 Java 数据库
Spring事务相关配置、案例:转账业务追加日志及事务传播行为
Spring事务相关配置、案例:转账业务追加日志及事务传播行为
47 0
|
5月前
|
消息中间件 存储 Shell
Docker部署RabbitMQ配置日志映射本地文件
Docker部署RabbitMQ配置日志映射本地文件
125 0
|
5月前
|
NoSQL Redis Docker
docker配置redis映射本地日志
docker配置redis映射本地日志
131 0
|
5月前
|
Java
logback为日志配置颜色
logback为日志配置颜色
|
6月前
|
网络协议 应用服务中间件 nginx
nginx配置tcp协议代理的日志
nginx配置tcp协议代理的日志
148 0
|
3月前
|
Java Maven
springboot 日志配置
springboot 日志配置
114 0

相关产品

  • 日志服务