您可以在数据加工任务中配置自定义角色来读取源Logstore中的数据以及将数据加工结果写入目标Logstore。本文介绍如何为自定义角色授予Logstore数据访问权限。
前提条件
已创建RAM角色。具体操作,请参见创建可信实体为阿里云服务的RAM角色。
创建RAM角色时,必须选择可信实体类型为阿里云服务,且必须选择受信服务为日志服务。
请检查角色的信任策略如下,
Service
内容至少包含"log.aliyuncs.com"
。{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "log.aliyuncs.com" ] } } ], "Version": "1" }
授予RAM角色源Logstore读权限
使用阿里云账号为RAM角色授权后,该RAM角色将具备读取源Logstore数据的权限。您可以在创建数据加工任务时,使用该RAM角色。具体操作,请参见创建数据加工任务。
使用阿里云账号(主账号)或RAM管理员登录RAM控制台。
创建权限策略,该权限策略用于读取源Logstore中的数据。
在左侧导航栏,选择
。在权限策略页面,单击创建权限策略。
在创建权限策略页面,选择脚本编辑,将配置框中的原有脚本替换为如下内容,然后单击继续编辑基本信息。
精确授权。
例如:源Project名称为log-project-prod,源Logstore名称为access_log。在实际场景中,请根据实际情况替换。
{ "Version": "1", "Statement": [ { "Action": [ "log:ListShards", "log:GetCursorOrData", "log:GetConsumerGroupCheckPoint", "log:UpdateConsumerGroup", "log:ConsumerGroupHeartBeat", "log:ConsumerGroupUpdateCheckPoint", "log:ListConsumerGroup", "log:CreateConsumerGroup" ], "Resource": [ "acs:log:*:*:project/log-project-prod/logstore/access_log", "acs:log:*:*:project/log-project-prod/logstore/access_log/*" ], "Effect": "Allow" } ] }
模糊匹配授权。
例如:源Project名称为log-project-dev-a、log-project-dev-b、log-project-dev-c等,源Logstore名称为app_a_log、app_b_log、app_c_log等,则使用模糊匹配授权。在实际场景中,请根据实际情况替换。
{ "Version": "1", "Statement": [ { "Action": [ "log:ListShards", "log:GetCursorOrData", "log:GetConsumerGroupCheckPoint", "log:UpdateConsumerGroup", "log:ConsumerGroupHeartBeat", "log:ConsumerGroupUpdateCheckPoint", "log:ListConsumerGroup", "log:CreateConsumerGroup" ], "Resource": [ "acs:log:*:*:project/log-project-dev-*/logstore/app_*_log", "acs:log:*:*:project/log-project-dev-*/logstore/app_*_log/*" ], "Effect": "Allow" } ] }
更多授权场景,请参见RAM自定义授权场景。
配置策略名称,本文以log-etl-source-reader-1-policy为例,然后单击确定。
授予RAM角色读取源Logstore的权限。
在左侧导航栏,选择 。
在角色页面,单击目标RAM角色操作列的新增授权。
选择自定义策略,然后选中步骤2中创建的权限策略(本文以log-etl-source-reader-1-policy为例。),单击确定。
单击关闭。
获取RAM角色标识(ARN)。
在该RAM角色的基本信息中查看,例如acs:ram::13234:role/logsource。
授予RAM角色目标Logstore写权限(同账号)
源Logstore和目标Logstore属于同一个阿里云账号时,您使用阿里云账号为RAM角色授权后,该RAM角色将具备写入加工结果到目标Logstore的权限。您可以在创建数据加工任务时,使用该RAM角色。具体操作,请参见创建数据加工任务。
使用阿里云账号(主账号)或RAM管理员登录RAM控制台。
创建权限策略。
在左侧导航栏,选择
。在权限策略页面,单击创建权限策略。
在创建权限策略页面,选择脚本编辑,将配置框中的原有脚本替换为如下内容,然后单击继续编辑基本信息。
精确授权。
例如:目标Project名称为log-project-prod,目标Logstore名称为access_log_output。在实际场景中,请根据实际情况替换。
{ "Version": "1", "Statement": [ { "Action": [ "log:Post*", "log:BatchPost*" ], "Resource": "acs:log:*:*:project/log-project-prod/logstore/access_log_output", "Effect": "Allow" } ] }
模糊匹配授权。
例如:目标Project名称为log-project-dev-a、log-project-dev-b、log-project-dev-c等,目标Logstore名称为app_a_log_output、app_b_log_output、app_c_log_output等,则使用模糊匹配授权。在实际场景中,请根据实际情况替换。
{ "Version": "1", "Statement": [ { "Action": [ "log:Post*", "log:BatchPost*" ], "Resource": "acs:log:*:*:project/log-project-dev-*/logstore/app_*_log_output", "Effect": "Allow" } ] }
更多授权场景,请参见RAM自定义授权场景。
配置策略名称,本文以log-etl-target-writer-1-policy为例,然后单击确定。
授予RAM角色写入数据到目标Logstore的权限。
在左侧导航栏,选择 。
在角色页面,单击目标RAM角色操作列的新增授权。
选择步骤2中创建的权限策略(本文以log-etl-target-writer-1-policy为例。),单击确认新增授权。
单击关闭。
获取RAM角色标识(ARN)。
在该RAM角色的基本信息中查看,例如acs:ram::13234:role/logtarget。
授予RAM角色目标Logstore写权限(跨账号)
如果源Logstore和目标Logstore不属于同一个阿里云账号时,请参见本步骤完成RAM授权。例如将账号A下的源Logstore中的数据加工后保存至账号B下的目标Logstore中,您可以按照以下步骤登录账号B进行授权。
在执行如下步骤前,账号B已完成授予RAM角色目标Logstore访问权限(同账号)章节中的操作。具体操作,请参见授予RAM角色目标Logstore写权限(同账号)。
使用阿里云账号(主账号)或RAM管理员登录RAM控制台。
在左侧导航栏,选择 。
在RAM角色列表中,单击目标RAM角色。
在信任策略管理页签中,单击编辑信任策略。
在Service配置项中添加源Logstore所属的阿里云账号A的ID。其中,请根据实际情况替换源Logstore所属的阿里云账号A的ID。您可以在账号中心查看阿里云账号ID。该策略表示账号A有权限通过日志服务获取临时Token来操作账号B的资源。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "源Logstore所属的阿里云账号A的ID@log.aliyuncs.com" ] } } ], "Version": "1" }
获取RAM角色标识(ARN)。
在该角色的基本信息中查看,例如acs:ram::13234:role/logtarget。
后续步骤
在数据加工任务中配置RAM角色标识。更多信息,请参见创建数据加工任务。
在1中输入具备源Logstore读权限的RAM角色标识。更多信息,请参见授予RAM角色源Logstore读权限。
在2中输入具备目标Logstore写权限的RAM角色标识。更多信息,请参见授予RAM角色目标Logstore写权限(同账号)或授予RAM角色目标Logstore写权限(跨账号)。