Simple Log Service では、デフォルトまたはカスタムロールを使用してデータ変換タスクを作成できます。このトピックでは、カスタムロールに Logstore 内のデータへのアクセスに必要な権限を付与する方法について説明します。
前提条件
RAM ロールが作成されていること。詳細については、「信頼できる Alibaba Cloud サービス用の RAM ロールを作成する」をご参照ください。
RAM ロールを作成する際、[プリンシパルタイプ] を [クラウドサービス] に、[プリンシパル名] を [Simple Log Service] に設定します。
RAM ロールの信頼ポリシーを確認します。
Service要素に少なくとも"log.aliyuncs.com"が含まれていることを確認してください。{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "log.aliyuncs.com" ] } } ], "Version": "1" }
RAM ロールへのソース Logstore に対する読み取り専用アクセスの付与
RAM ロールにソース Logstore に対する読み取り専用権限を付与すると、そのロールはソース Logstore からデータを読み取ることができるようになります。その後、データ変換タスクを作成する際にこの RAM ロールを使用できます。詳細については、「データ変換タスクの作成」をご参照ください。
Alibaba Cloud アカウント、または管理権限を持つ RAM ユーザーを使用して RAM コンソールにログインします。
カスタムポリシーを作成します。この例では、`log-etl-source-reader-policy` ポリシーが作成されます。このポリシーは、ソース Logstore に対する読み取り専用権限を付与します。詳細については、「JSON タブでのカスタムポリシーの作成」をご参照ください。
[ポリシーの作成] ページの [JSON] タブで、完全一致またはあいまい一致による権限付与を使用するポリシードキュメントを使用して、コードエディタ内の既存のスクリプトを置き換えることができます。
権限付与の完全一致
この例では、ソースプロジェクト名は `log-project-prod`、ソース Logstore 名は `access_log` です。ビジネス要件に基づいてプロジェクト名と Logstore 名を置き換えてください。
{ "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" } ] }権限付与のあいまい一致
この例では、ソースプロジェクト名は `log-project-dev-a`、`log-project-dev-b`、`log-project-dev-c` で、ソース Logstore 名は `app_a_log`、`app_b_log`、`app_c_log` です。ビジネス要件に基づいてプロジェクト名と Logstore 名を置き換えてください。
{ "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 が同じ Alibaba Cloud アカウント内にある場合、RAM ロールに書き込み権限を付与して、変換結果を宛先 Logstore に書き込めるようにする必要があります。データ変換タスクを作成する際にこの RAM ロールを使用できます。詳細については、「データ変換タスクの作成」をご参照ください。
カスタムポリシーを作成します。この例では、`log-etl-target-writer-policy` ポリシーが作成されます。このポリシーは、変換結果を宛先 Logstore に書き込む権限を付与します。詳細については、「JSON タブでのカスタムポリシーの作成」をご参照ください。
[ポリシーの作成] ページの [JSON] タブで、完全一致またはあいまい一致による権限付与を使用するポリシードキュメントを使用して、コードエディタ内の既存のスクリプトを置き換えることができます。
権限付与の完全一致
この例では、宛先プロジェクト名は `log-project-prod`、宛先 Logstore 名は `access_log_output` です。ビジネス要件に基づいてプロジェクト名と Logstore 名を置き換えてください。
{ "Version": "1", "Statement": [ { "Action": [ "log:Post*" ], "Resource": "acs:log:*:*:project/log-project-prod/logstore/access_log_output", "Effect": "Allow" } ] }権限付与のあいまい一致
この例では、宛先プロジェクト名は `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` です。ビジネス要件に基づいてプロジェクト名と Logstore 名を置き換えてください。
{ "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 が異なる Alibaba Cloud アカウントにある場合は、アカウント間の RAM 権限付与を行う必要があります。たとえば、データ変換タスクが Alibaba Cloud アカウント A のソース Logstore からデータを読み取り、変換後のデータを Alibaba Cloud アカウント B の宛先 Logstore に書き込む場合、Alibaba Cloud アカウント B にログインして必要な権限を付与する必要があります。
開始する前に、「RAM ロールへの宛先 Logstore (同一アカウント) に対する書き込みアクセスの付与」で説明されている Alibaba Cloud アカウント B の手順を完了していることを確認してください。
Alibaba Cloud アカウント、または管理権限を持つ RAM ユーザーを使用して RAM コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
ロールリストで、宛先 RAM ロールの名前をクリックします。
[信頼ポリシー] タブで、[信頼ポリシーの編集] をクリックします。
Service設定項目に、ソース Logstore が存在する Alibaba Cloud アカウント A の IDを追加します。ソース Logstore が存在する Alibaba Cloud アカウント A の IDを実際の Alibaba Cloud アカウント ID に置き換えてください。Alibaba Cloud アカウント ID は、アカウントセンターで確認できます。このポリシーにより、アカウント A は SLS を介して一時的なトークンを取得し、アカウント B のリソースを操作できるようになります。{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "ソース Logstore が存在する Alibaba Cloud アカウント A の ID@log.aliyuncs.com" ] } } ], "Version": "1" }RAM ロールの Alibaba Cloud リソース名 (ARN) を取得します。詳細については、「RAM ロールの情報の表示」をご参照ください。
次のステップ
データ変換タスクで RAM ロールの ARN を設定します。詳細については、「データ変換タスクの作成」をご参照ください。