假设有这样一个场景,您的日志服务位于阿里云账号A,对象存储 OSS(Object Storage Service)位于阿里云账号B。您需要将日志服务Logstore中数据投递到OSS Bucket中,那么您可参考本文完成自定义角色授权。
步骤一:授予阿里云账号A下的RAM角色role-a
读取Logstore数据的权限
授予账号A下的RAM角色role-a
读取Logstore数据的权限后,OSS投递任务可以扮演该角色读取账号A下Logstore中的数据。
使用阿里云账号A登录RAM控制台。
创建一个自定义权限策略,该策略具备读取Logstore数据的权限。
您可选择使用精确授权或模糊匹配授权。
精确授权
在创建权限策略页面,单击脚本编辑页签,并使用以下脚本替换配置框中的原有内容。具体操作,请参见通过脚本编辑模式创建自定义权限策略。
重要脚本中的
Project名称
和Logstore名称
请根据实际情况替换。{ "Version":"1", "Statement":[ { "Action":[ "log:GetCursorOrData", "log:ListShards" ], "Resource":[ "acs:log:*:*:project/Project名称/logstore/Logstore名称" ], "Effect":"Allow" } ] }
模糊匹配授权
在创建权限策略页面,单击脚本编辑页签,并使用以下脚本替换配置框中的原有内容。具体操作,请参见通过脚本编辑模式创建自定义权限策略。
重要例如Project名称为log-project-dev-a、log-project-dev-b、log-project-dev-c等,Logstore名称为website_a_log、website_b_log、website_c_log等,则您可以使用模糊匹配授权。
脚本中的
log-project-dev-*
和website_*_log*
请根据实际情况替换。
{ "Version":"1", "Statement":[ { "Action":[ "log:GetCursorOrData", "log:ListShards" ], "Resource":[ "acs:log:*:*:project/log-project-dev-*/logstore/website_*_log*" ], "Effect":"Allow" } ] }
创建RAM角色
role-a
,具体操作,请参见创建可信实体为阿里云服务的RAM角色。重要创建RAM角色时,信任主体类型应选择云服务,且信任主体名称应选择日志服务。
请检查角色的信任策略如下,
Service
内容至少包含"log.aliyuncs.com"
。{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "log.aliyuncs.com" ] } } ], "Version": "1" }
为RAM角色
role-a
添加创建的自定义权限。具体操作,请参见为RAM角色授权。
后续操作
获取RAM角色标识(ARN),具体操作,请参见查看RAM角色。
如果您在创建OSS投递任务时读Logstore RAM角色选择自定义角色,则需要输入该信息。更多信息,请参见创建OSS投递任务(新版)。
步骤二:授予阿里云账号B下的RAM角色role-b
写OSS Bucket的权限
授予账号B下的RAM角色role-b
写OSS Bucket的权限后,OSS投递任务可以扮演该角色将账号A下的Logstore数据投递到账号B下的OSS Bucket中。
使用阿里云账号B登录RAM控制台。
创建一个自定义权限策略,该策略具备写OSS Bucket权限。
在创建权限策略页面,单击脚本编辑页签,并使用以下脚本替换配置框中的原有内容。具体操作,请参见通过脚本编辑模式创建自定义权限策略。
{ "Version": "1", "Statement": [ { "Action": [ "oss:PutObject" ], "Resource": "*", "Effect": "Allow" } ] }
说明如果您有更细粒度的OSS权限控制需求,请参见RAM Policy。
创建RAM角色
role-b
,具体操作,请参见创建可信实体为阿里云服务的RAM角色。重要创建RAM角色时,信任主体类型应选择云服务,且信任主体名称应选择日志服务。
请检查角色的信任策略如下,
Service
内容至少包含"log.aliyuncs.com"
。{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "log.aliyuncs.com" ] } } ], "Version": "1" }
修改RAM角色
role-b
的信任策略。具体操作,请参见修改RAM角色的信任策略。重要在Service配置项中添加阿里云账号A的ID@log.aliyuncs.com,并根据实际情况替换该值。您可以在账号中心查看阿里云账号ID。
该策略表示阿里云账号A有权限通过日志服务获取临时Token来操作阿里云账号B中的资源。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "log.aliyuncs.com", "阿里云账号A的ID@log.aliyuncs.com" ] } } ], "Version": "1" }
为RAM角色
role-b
添加创建的自定义权限。具体操作,请参见为RAM角色授权。
后续操作
获取RAM角色标识(ARN),具体操作,请参见查看RAM角色。
如果您在创建OSS投递任务时写OSS RAM角色选择自定义角色,则需要输入该信息。更多信息,请参见创建OSS投递任务(新版)。