通過自訂RAM角色訪問資料(跨帳號情境)
OSS-HDFS投遞任務運行時,將讀取LogStore中資料並投遞到OSS Bucket中。您可以授權OSS-HDFS投遞任務扮演自訂RAM角色完成上述操作。如果LogStore和OSS Bucket不屬於同一個阿里雲帳號,您可參考本文檔完成授權操作。
步驟一:授予阿里雲帳號A下的RAM角色role-a讀取LogStore資料的許可權
授予阿里雲帳號A下的RAM角色role-a讀取LogStore資料的許可權後,OSS-HDFS投遞任務可以扮演該角色讀取帳號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" } ] } -
-
建立OSS-HDFS投遞任務需要扮演的RAM角色
role-a。具體操作,請參見建立可信實體為阿里雲服務的RAM角色。重要-
建立RAM角色時,信任主體類型應選擇雲端服務,且信任主體名稱應選擇Log Service。
-
請檢查角色的信任策略如下,
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-HDFS投遞任務時使用的是自訂RAM角色,則需要在讀Logstore RAM角色中輸入該資訊。具體操作,請參見建立OSS-HDFS投遞任務。在讀Logstore RAM角色中選擇自訂角色,並在輸入框中填寫對應的 RAM 角色 ARN,格式樣本:acs:ram::帳號ID:role/角色名稱。該角色用於 Logstore 讀取的存取權限控制。
步驟二:授予阿里雲帳號B下的RAM角色b寫OSS Bucket的許可權
授予阿里雲帳號B下的RAM角色b寫OSS Bucket的許可權後,OSS投遞任務可以扮演該角色將阿里雲帳號A下的LogStore資料投遞到阿里雲帳號B下的OSS Bucket中。
-
使用阿里雲帳號B登入RAM控制台。
-
建立一個自訂權限原則,該策略具備寫OSS Bucket許可權。
在创建权限策略頁面,單擊指令碼編輯頁簽,並使用以下指令碼替換配置框中的原有內容。具體操作,請參見通過指令碼編輯模式建立自訂權限原則。
{ "Statement": [ { "Action": [ "oss:PutObject" ], "Resource": "*", "Effect": "Allow" }, { "Effect": "Allow", "Action": "oss:ListObjects", "Resource": [ "acs:oss:*:*:*" ] }, { "Effect": "Allow", "Action": [ "oss:GetBucketInfo", "oss:PostDataLakeStorageFileOperation", "oss:PostDataLakeStorageAdminOperation" ], "Resource": "*" }, { "Effect": "Allow", "Action": "oss:*", "Resource": [ "acs:oss:*:*:*/.dlsdata", "acs:oss:*:*:*/.dlsdata*" ] } ], "Version": "1" } -
建立OSS-HDFS投遞任務需要扮演的RAM角色
role-b。具體操作,請參見建立可信實體為阿里雲服務的RAM角色。重要-
建立RAM角色時,信任主體類型應選擇雲端服務,且信任主體名稱應選擇Log Service。
-
請檢查角色的信任策略如下,
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有許可權通過Log Service擷取臨時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-HDFS投遞任務時使用的是自訂RAM角色,則需要在寫OSS-HDFS RAM角色中輸入該資訊。具體操作,請參見建立OSS-HDFS投遞任務。在寫OSS-HDFS RAM角色配置項中,選擇自訂角色,並在輸入框中填寫已擷取的 RAM 角色 ARN。