您可以在數據加工任務中配置自定義角色來讀取源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寫權限(跨賬號)。