通過自定義角色訪問數(shù)據(jù)(跨賬號場景)
假設(shè)有這樣一個場景,您的日志服務(wù)位于阿里云賬號A,對象存儲 OSS(Object Storage Service)位于阿里云賬號B。您需要將日志服務(wù)Logstore中數(shù)據(jù)投遞到OSS Bucket中,那么您可參考本文完成自定義角色授權(quán)。
步驟一:授予阿里云賬號A下的RAM角色role-a
讀取Logstore數(shù)據(jù)的權(quán)限
授予賬號A下的RAM角色a讀取Logstore數(shù)據(jù)的權(quán)限后,OSS投遞任務(wù)可以扮演該角色讀取賬號A下Logstore中的數(shù)據(jù)。
使用阿里云賬號A登錄RAM控制臺。
創(chuàng)建一個自定義權(quán)限策略,該策略具備讀取Logstore數(shù)據(jù)的權(quán)限。
您可選擇使用精確授權(quán)或模糊匹配授權(quán)。
精確授權(quán)
在創(chuàng)建權(quán)限策略頁面,單擊腳本編輯頁簽,并使用以下腳本替換配置框中的原有內(nèi)容。具體操作,請參見通過腳本編輯模式創(chuàng)建自定義權(quán)限策略。
重要腳本中的
Project名稱
和Logstore名稱
請根據(jù)實際情況替換。{ "Version":"1", "Statement":[ { "Action":[ "log:GetCursorOrData", "log:ListShards" ], "Resource":[ "acs:log:*:*:project/Project名稱/logstore/Logstore名稱" ], "Effect":"Allow" } ] }
模糊匹配授權(quán)
在創(chuàng)建權(quán)限策略頁面,單擊腳本編輯頁簽,并使用以下腳本替換配置框中的原有內(nèi)容。具體操作,請參見通過腳本編輯模式創(chuàng)建自定義權(quán)限策略。
重要例如Project名稱為log-project-dev-a、log-project-dev-b、log-project-dev-c等,Logstore名稱為website_a_log、website_b_log、website_c_log等,則您可以使用模糊匹配授權(quán)。
腳本中的
log-project-dev-*
和website_*_log*
請根據(jù)實際情況替換。
{ "Version":"1", "Statement":[ { "Action":[ "log:GetCursorOrData", "log:ListShards" ], "Resource":[ "acs:log:*:*:project/log-project-dev-*/logstore/website_*_log*" ], "Effect":"Allow" } ] }
創(chuàng)建RAM角色
role-a
,具體操作,請參見創(chuàng)建可信實體為阿里云服務(wù)的RAM角色。重要創(chuàng)建RAM角色時,必須選擇可信實體類型為阿里云服務(wù),且必須選擇受信服務(wù)為日志服務(wù)。
請檢查角色的信任策略如下,
Service
內(nèi)容至少包含"log.aliyuncs.com"
。{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "log.aliyuncs.com" ] } } ], "Version": "1" }
為RAM角色
role-a
添加創(chuàng)建的自定義權(quán)限。具體操作,請參見為RAM角色授權(quán)。
后續(xù)操作
獲取RAM角色標(biāo)識(ARN),具體操作,請參見查看RAM角色。
如果您在創(chuàng)建OSS投遞任務(wù)時讀Logstore RAM角色選擇自定義角色,則需要輸入該信息。更多信息,請參見創(chuàng)建OSS投遞任務(wù)(新版)。
步驟二:授予阿里云賬號B下的RAM角色b寫OSS Bucket的權(quán)限
授予賬號B下的RAM角色role-b
寫OSS Bucket的權(quán)限后,OSS投遞任務(wù)可以扮演該角色將賬號A下的Logstore數(shù)據(jù)投遞到賬號B下的OSS Bucket中。
使用阿里云賬號B登錄RAM控制臺。
創(chuàng)建一個自定義權(quán)限策略,該策略具備寫OSS Bucket權(quán)限。
在創(chuàng)建權(quán)限策略頁面,單擊腳本編輯頁簽,并使用以下腳本替換配置框中的原有內(nèi)容。具體操作,請參見通過腳本編輯模式創(chuàng)建自定義權(quán)限策略。
{ "Version": "1", "Statement": [ { "Action": [ "oss:PutObject" ], "Resource": "*", "Effect": "Allow" } ] }
說明如果您有更細(xì)粒度的OSS權(quán)限控制需求,請參見RAM Policy。
創(chuàng)建RAM角色
role-b
,具體操作,請參見創(chuàng)建可信實體為阿里云服務(wù)的RAM角色。重要創(chuàng)建RAM角色時,必須選擇可信實體類型為阿里云服務(wù),且必須選擇受信服務(wù)為日志服務(wù)。
請檢查角色的信任策略如下,
Service
內(nèi)容至少包含"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,并根據(jù)實際情況替換該值。您可以在賬號中心查看阿里云賬號ID。
該策略表示阿里云賬號A有權(quán)限通過日志服務(wù)獲取臨時Token來操作阿里云賬號B中的資源。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "log.aliyuncs.com", "阿里云賬號A的ID@log.aliyuncs.com" ] } } ], "Version": "1" }
為RAM角色
role-b
添加創(chuàng)建的自定義權(quán)限。具體操作,請參見為RAM角色授權(quán)。
后續(xù)操作
獲取RAM角色標(biāo)識(ARN),具體操作,請參見查看RAM角色。
如果您在創(chuàng)建OSS投遞任務(wù)時寫OSS RAM角色選擇自定義角色,則需要輸入該信息。更多信息,請參見創(chuàng)建OSS投遞任務(wù)(新版)。