日志服務支持通過默認角色、自定義角色或密鑰方式創建數據加工任務。您可在創建數據加工任務選擇自定義角色,本文介紹如何為自定義角色授予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控制臺。
創建一個自定義權限策略,例如命名為:
log-etl-source-reader-policy
。該權限策略用于讀取源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角色添加創建的自定義權限。具體操作,請參見為RAM角色授權。
授權RAM角色寫數據到目標Logstore(同賬號)
源Logstore和目標Logstore屬于同一個阿里云賬號時,您使用阿里云賬號為RAM角色授權后,該RAM角色將具備寫入加工結果到目標Logstore的權限。您可以在創建數據加工任務時,使用該RAM角色。具體操作,請參見創建數據加工任務。
創建一個自定義權限策略,例如命名為:
log-etl-target-writer-policy
。該權限策略用于將加工結果寫入到目標Logstore。具體操作,請參見通過腳本編輯模式創建自定義權限策略。其中在腳本編輯頁簽,您可選擇使用精確授權或模糊匹配授權腳本替換配置框中的原有內容。
精確授權
例如:目標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角色添加創建的自定義權限。具體操作,請參見為RAM角色授權。
授權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),具體操作,請參見查看RAM角色。
后續步驟
在數據加工任務中配置RAM角色標識。更多信息,請參見創建數據加工任務。