データ変換には、2 種類の権限付与が含まれます:
データ変換ジョブの作成、削除、変更、表示、コンソールまたはソフトウェア開発キット (SDK) を使用したデータプレビューなど、データ変換操作を実行するための権限。
データ変換ジョブがデータにアクセスするための権限。これには、ソース Logstore からのデータ読み取りと、変換結果の宛先 Logstore への書き込みが含まれます。
RAM ユーザーへのデータ変換操作権限の付与
データ変換操作には、データ変換ジョブの作成、削除、変更、表示、およびデータのプレビューが含まれます。権限を付与する前に、RAM ユーザーが作成されていることを確認してください。権限は、次の 2 つの方法のいずれかで付与できます:
システムポリシーの使用:この方法は設定が簡単ですが、広範な権限に対する制御が粗粒度になります。
カスタムポリシーの使用:この方法は、特定のプロジェクトまたは Logstore の操作に対して細粒度の制御を提供します。厳格な権限要件を持つ環境に適しています。
システムポリシーの使用
Alibaba Cloud アカウントまたは RAM 管理者として Resource Access Management (RAM) コンソールにログインします。
詳細については、RAM ユーザー権限の管理をご参照ください。次の 2 つのシステムポリシーを RAM ユーザーにアタッチします:
AliyunRAMFullAccessAliyunLogFullAccess
設定を保存すると、RAM ユーザーは次の操作を実行できます:
データ変換ジョブの作成、削除、変更、表示。
ソース Logstore からデータを読み取り、ジョブをプレビューする。
カスタムポリシーの使用
Alibaba Cloud アカウントまたは RAM 管理者として RAM コンソールにログインします。
スクリプトモードでカスタムポリシーを作成します。この例では、ポリシーに
log-etl-operator-policyという名前を付けます。[スクリプトエディター] タブで、既存のコンテンツを次のテンプレートに置き換えます。テンプレートでは、プロジェクト名と Logstore 名を実際の値に置き換えてください。{ "Version":"1", "Statement":[ { "Effect":"Allow", "Action":[ "log:CreateLogStore", "log:CreateIndex", "log:UpdateIndex", "log:Get*" ], "Resource":"acs:log:*:*:project/your-project-name/logstore/internal-etl-log" }, { "Action":[ "log:List*" ], "Resource":"acs:log:*:*:project/*", "Effect":"Allow" }, { "Action":[ "log:Get*", "log:List*" ], "Resource":[ "acs:log:*:*:project/your-project-name/logstore/your-logstore-name" ], "Effect":"Allow" }, { "Effect":"Allow", "Action":[ "log:GetDashboard", "log:CreateDashboard", "log:UpdateDashboard" ], "Resource":"acs:log:*:*:project/your-project-name/dashboard/internal-etl-insight*" }, { "Effect":"Allow", "Action":"log:CreateDashboard", "Resource":"acs:log:*:*:project/your-project-name/dashboard/*" }, { "Effect":"Allow", "Action":[ "log:*" ], "Resource":"acs:log:*:*:project/your-project-name/job/*" },{ "Effect":"Allow", "Action":[ "log:*" ], "Resource":"acs:log:*:*:project/your-project-name/etl/*" }, { "Effect": "Allow", "Action": [ "ram:PassRole", "ram:GetRole", "ram:ListRoles" ], "Resource": "*" } ] }
データ変換ジョブへの Logstore データアクセス権限の付与
同一アカウント内の Logstore への書き込み
このシナリオは、ソース Logstore と宛先 Logstore が同じ Alibaba Cloud アカウントに属する場合に適用されます。権限は、デフォルトのシステムロールまたはカスタムロールを使用して付与できます。
デフォルトロールの使用
データ変換ジョブの作成時に、デフォルトロール AliyunLogETLRole を選択できます。 AliyunLogETLRole システムロールには、次の組み込み権限があります。
ソース Logstore からデータを読み取る。
変換結果を同一アカウント内の宛先 Logstore に書き込む。
カスタムロールの使用
ステップ 1:RAM ロールの作成と信頼ポリシーの設定
信頼できるエンティティタイプ: Alibaba Cloud サービス
信頼できるエンティティ名: Simple Log Service
ロールが作成されたら、その信頼ポリシーを確認します。
Serviceパラメーターには、少なくとも"log.aliyuncs.com"が含まれている必要があります。
ステップ 2:RAM ロールへのソース Logstore 読み取り専用アクセスの付与
カスタムポリシーを作成します。たとえば、
log-etl-source-reader-policyという名前を付けます。このポリシーにより、カスタムロールは特定のソース Logstore からデータを読み取ることができます。[スクリプトエディター] タブで、既存のコンテンツを完全一致での権限付与またはワイルドカードでの権限付与のスクリプトに置き換えます。
完全一致での権限付与
たとえば、ソースプロジェクトの名前が 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" } ] }ワイルドカードでの権限付与
シナリオ例:次の名前を実際の値に置き換えてください。
ソースプロジェクトの名前が 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 ロールへの権限付与をご参照ください。このポリシーをステップ 1で作成したカスタム RAM ロールにアタッチします。
ステップ 3:RAM ロールへの宛先 Logstore 書き込み権限の付与
カスタムポリシーを作成します。たとえば、
log-etl-target-writer-policyという名前を付けます。このポリシーにより、カスタムロールは変換結果を宛先 Logstore に書き込むことができます。[スクリプトエディター] タブで、既存のコンテンツを完全一致での権限付与またはワイルドカードでの権限付与のスクリプトに置き換えます。
完全一致での権限付与
たとえば、宛先プロジェクトの名前が 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" } ] }ワイルドカードでの権限付与
シナリオ例:次の名前を実際の値に置き換えてください。
宛先プロジェクトの名前が 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 ロールへの権限付与をご参照ください。このポリシーをステップ 1で作成したカスタム RAM ロールにアタッチします。
別アカウント内の Logstore への書き込み
このシナリオは、ソース Logstore と宛先 Logstore が異なる Alibaba Cloud アカウントに属する場合に適用されます。この場合、カスタムロールを使用してのみ Logstore データへのアクセスを許可できます。
シナリオ例:Alibaba Cloud アカウント A のソース Logstore からデータを変換し、その結果を Alibaba Cloud アカウント B の宛先 Logstore に保存する必要があります。これを行うには、Alibaba Cloud アカウント B にログインし、次の手順で説明するように権限を付与する必要があります。
操作手順
ステップ 1:RAM ロールの作成と信頼ポリシーの設定
アカウント A とアカウント B に、それぞれ RAM ロール A と RAM ロール B の 2 つの RAM ロールを作成します。アカウント A はソース Logstore を所有するアカウントで、アカウント B は宛先 Logstore を所有するアカウントです。
信頼されたエンティティタイプ: Alibaba Cloud サービス
信頼できるエンティティ名: Simple Log Service
ロールの作成後、その信頼ポリシーの
Serviceパラメーターに、少なくとも"log.aliyuncs.com"が含まれていることを確認してください。
ステップ 2:ソース Logstore のデータ読み取り権限の付与
ソース Logstore を所有する Alibaba Cloud アカウント A で、カスタムポリシーを作成します。たとえば、
log-etl-source-reader-policyという名前を付けます。このポリシーにより、カスタムロールは特定のソース Logstore からデータを読み取ることができます。[スクリプトエディター] タブで、既存のコンテンツを完全一致での権限付与またはワイルドカードでの権限付与のスクリプトに置き換えます。
完全一致での権限付与
たとえば、ソースプロジェクトの名前が 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" } ] }ワイルドカードでの権限付与
たとえば、ソースプロジェクトの名前が 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" } ] }このポリシーをステップ 1で作成したカスタムの RAM ロール A にアタッチします。
ステップ 3:宛先 Logstore へのデータ書き込み権限の付与
宛先 Logstore を所有する Alibaba Cloud アカウント B で、カスタムポリシーを作成します。たとえば、
log-etl-target-writer-policyという名前を付けます。このポリシーにより、カスタムロールは変換結果を宛先 Logstore に書き込むことができます。[スクリプトエディター] タブで、既存のコンテンツを完全一致での権限付与またはワイルドカードでの権限付与のスクリプトに置き換えます。
完全一致での権限付与
たとえば、宛先プロジェクトの名前が 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" } ] }ワイルドカードでの権限付与
シナリオ例:次の名前を実際の値に置き換えてください。
宛先プロジェクトの名前が 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" } ] }このポリシーをステップ 1で作成したカスタムの RAM ロール B にアタッチします。
ステップ 4:信頼ポリシーの設定
宛先 Logstore を所有する Alibaba Cloud アカウント B で、次の操作を行います:
RAM コンソールにログインします。
左側のナビゲーションウィンドウで、[] を選択します。
RAM ロールリストで、宛先の RAM ロールをクリックします。
[信頼ポリシー管理] タブで、[信頼ポリシーの編集] をクリックします:
{ "Version": "1", "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "ID-of-account-A-that-owns-the-source-Logstore@log.aliyuncs.com" ] } } ] }
注:
"ID-of-account-A-that-owns-the-source-Logstore@log.aliyuncs.com"をアカウント A の ID (例:1234567890123***@log.aliyuncs.com) に置き換えてください。このポリシーは、アカウント A が Simple Log Service から一時的な認証情報を取得して、アカウント B でこのロールを偽装できることを示します。これにより、アカウント A は、宛先 Logstore など、アカウント B で設定されているリソースにアクセスできます。
ロールの詳細で、ロールの Alibaba Cloud リソース名 (ARN) を記録します。この ARN は、アカウント A でデータ変換ジョブを作成するときに必要になります。