資料加工涉及兩類授權:
資料加工操作許可權:在控制台/SDK 中建立、刪除、修改、查看資料加工任務,並做資料預覽。
加工任務訪問資料許可權:資料加工任務本身如何讀取源 LogStore 資料,以及如何將加工結果寫入目標 LogStore。
為RAM使用者授予資料加工操作許可權
資料加工操作包括建立、刪除、修改、查看資料加工任務,並進行加工預覽。授權前,請確保您已提前建立好RAM使用者。支援如下兩種授權方式:
使用系統權限原則
使用 阿里雲主帳號 或 RAM 管理員登入RAM控制台。
參考管理RAM使用者的許可權,給該 RAM 使用者添加以下兩個系統權限原則:
AliyunRAMFullAccessAliyunLogFullAccess
儲存生效後,該 RAM 使用者即可:
建立、刪除、修改、查看資料加工任務。
讀取源 LogStore 資料做任務預覽等。
使用自訂權限原則
使用 阿里雲主帳號 或 RAM 管理員登入RAM控制台。
通過指令碼編輯模式建立自訂權限原則(例如命名為
log-etl-operator-policy),在指令碼編輯頁簽,將內容替換為以下模板,並按實際情況替換其中的 Project名稱、LogStore名稱:{ "Version":"1", "Statement":[ { "Effect":"Allow", "Action":[ "log:CreateLogStore", "log:CreateIndex", "log:UpdateIndex", "log:Get*" ], "Resource":"acs:log:*:*:project/Project名稱/logstore/internal-etl-log" }, { "Action":[ "log:List*" ], "Resource":"acs:log:*:*:project/*", "Effect":"Allow" }, { "Action":[ "log:Get*", "log:List*" ], "Resource":[ "acs:log:*:*:project/Project名稱/logstore/Logstore名稱" ], "Effect":"Allow" }, { "Effect":"Allow", "Action":[ "log:GetDashboard", "log:CreateDashboard", "log:UpdateDashboard" ], "Resource":"acs:log:*:*:project/Project名稱/dashboard/internal-etl-insight*" }, { "Effect":"Allow", "Action":"log:CreateDashboard", "Resource":"acs:log:*:*:project/Project名稱/dashboard/*" }, { "Effect":"Allow", "Action":[ "log:*" ], "Resource":"acs:log:*:*:project/Project名稱/job/*" },{ "Effect":"Allow", "Action":[ "log:*" ], "Resource":"acs:log:*:*:project/Project名稱/etl/*" }, { "Effect": "Allow", "Action": [ "ram:PassRole", "ram:GetRole", "ram:ListRoles" ], "Resource": "*" } ] }
為資料加工任務授權訪問LogStore資料
同帳號寫入
適用於源LogStore和目標LogStore屬於同一阿里雲帳號的情境。支援通過系統預設角色或自訂角色授權。
使用預設角色
建立加工任務時,可以直接選擇預設角色 AliyunLogETLRole。阿里雲系統角色 AliyunLogETLRole 已內建如下許可權:
讀取源 LogStore 資料的許可權。
將加工結果寫入同帳號下目標 LogStore 的許可權。
使用自訂角色
步驟一:建立RAM角色並配置信任策略
信任主體類型:雲端服務
信任主體名稱:Log Service
建立完成後,請檢查該角色的信任策略,
Service至少包含"log.aliyuncs.com"。
步驟二:授權RAM角色唯讀訪問源LogStore資料
建立自訂權限原則(例如命名為:
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
建立自訂權限原則(例如命名為:
log-etl-target-writer-policy),讓自訂角色具備將加工結果寫入到目標LogStore的許可權。在指令碼編輯頁簽,您可選擇使用精確授權或模糊比對授權指令碼替換配置框中的原有內容。
精確授權
例如:目標Project名稱為log-project-prod,目標LogStore名稱為access_log_output。在實際情境中,請根據實際情況替換。
{ "Version": "1", "Statement": [ { "Action": [ "log:Post*" ], "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 角色上。
跨帳號寫入
適用於源LogStore和目標LogStore不屬於同一個阿里雲帳號的情境,只能通過自訂角色授權訪問LogStore資料。
情境樣本:將阿里雲帳號A下的源LogStore中的資料加工後儲存至阿里雲帳號B下的目標LogStore中,您可以按照以下步驟登入阿里雲帳號B進行授權。
操作步驟
步驟一:建立RAM角色並配置信任策略
在源LogStore和目標LogStore所屬的帳號A、B下分別建立兩個RAM角色A和RAM角色B:
信任主體類型:雲端服務
信任主體名稱:Log Service
建立完成後,請檢查該角色的信任策略,
Service至少包含"log.aliyuncs.com"。
步驟二:授權讀取源LogStore資料
在源LogStore所屬的阿里雲帳號A下,建立自訂權限原則(例如命名為:
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 角色A上。
步驟三:授權寫入目標LogStore
在目標LogStore所屬的阿里雲帳號B中,建立自訂權限原則(例如命名為:
log-etl-target-writer-policy),讓自訂角色具備將加工結果寫入到目標LogStore的許可權。在指令碼編輯頁簽,您可選擇使用精確授權或模糊比對授權指令碼替換配置框中的原有內容。
精確授權
例如:目標Project名稱為log-project-prod,目標LogStore名稱為access_log_output。在實際情境中,請根據實際情況替換。
{ "Version": "1", "Statement": [ { "Action": [ "log:Post*" ], "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 角色B上。
步驟四:授信
在目標LogStore所屬的阿里雲帳號B中:
登入RAM控制台。
在左側導覽列中,選擇。
在RAM角色列表中,單擊目標RAM角色。
在信任策略管理頁簽中,單擊修改信任策略:
{ "Version": "1", "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "源Logstore所屬的阿里雲帳號A的ID@log.aliyuncs.com" ] } } ] }
說明:
將
"源LogStore所屬的阿里雲帳號A的ID@log.aliyuncs.com"替換為真實的帳號 A ID,例如1234567890123***@log.aliyuncs.com。該策略表示:帳號 A 可以通過Log Service擷取臨時憑證來扮演帳號 B 中的該角色,從而訪問帳號 B 中配置的資源(目標 LogStore)。
在角色詳情中,記錄該角色的 ARN(資源標識),後續在帳號 A 中建立資料加工任務時需要配置此 ARN。