您可以在資料加工任務中配置自訂角色來讀取源Logstore中的資料以及將資料加工結果寫入目標Logstore。本文介紹如何為自訂角色授予Logstore資料存取權限。
前提條件
已建立RAM角色。具體操作,請參見建立可信實體為阿里雲服務的RAM角色。
建立RAM角色時,必須選擇可信實體類型為阿里雲服務,且必須選擇受信服務為Log Service。
請檢查角色的信任策略如下,
Service
內容至少包含"log.aliyuncs.com"
。{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "log.aliyuncs.com" ] } } ], "Version": "1" }
授予RAM角色源Logstore讀許可權
使用阿里雲帳號為RAM角色授權後,該RAM角色將具備讀取源Logstore資料的許可權。您可以在建立資料加工任務時,使用該RAM角色。具體操作,請參見建立資料加工任務。
使用阿里雲帳號(主帳號)或Resource Access Management員登入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角色。具體操作,請參見建立資料加工任務。
使用阿里雲帳號(主帳號)或Resource Access Management員登入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寫入權限(同帳號)。
使用阿里雲帳號(主帳號)或Resource Access Management員登入RAM控制台。
在左側導覽列,選擇 。
在RAM角色列表中,單擊目標RAM角色。
在信任策略管理頁簽中,單擊編輯信任策略。
在Service配置項中添加源Logstore所屬的阿里雲帳號A的ID。其中,請根據實際情況替換源Logstore所屬的阿里雲帳號A的ID。您可以在帳號中心查看阿里雲帳號ID。該策略表示帳號A有許可權通過Log Service擷取臨時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寫入權限(跨帳號)。