DataWorks で MaxCompute や E-MapReduce (EMR) などの他のコンピュートエンジンを使用するには、まず DataWorks に必要なアクセス権限を付与する必要があります。権限を付与すると、システムはコンピュートエンジン用のサービスリンクロールを自動的に作成します。このトピックでは、DataWorks にこれらのコンピュートエンジンの使用を承認したときに自動的に作成されるロールとアクセスポリシーについて説明します。
バックグラウンド
DataWorks コンソールでコンピュートエンジンインスタンスの追加や編集など、コンピュートエンジンに関連する操作を実行すると、権限を付与するように求められます。権限を付与すると、システムは自動的にサービスリンクロールを作成します。
Alibaba Cloud アカウントまたは
AliyunDataWorksFullAccessロールを持つ Resource Access Management (RAM) ユーザーのみが、DataWorks に他のコンピュートエンジンを使用する権限を付与できます。RAM ユーザーがAliyunDataWorksFullAccessロールを持っていない場合は、RAM ユーザーにそのロールを付する必要があります。詳細については、「RAM ユーザーへの権限付与」をご参照ください。権限付与プロンプトは、データソース管理などの DataWorks の操作によってトリガーされます。
Resource Access Management (RAM) コンソールの ページで、ロールの詳細を検索して表示できます。 サービスリンクロールの詳細については、「サービスリンクロール」をご参照ください。
次の表は、必要な権限を付与した後に自動的に作成されるロールと、各ロールの詳細へのリンクを示しています。
ロール | 目的 | 詳細 |
| DataWorks に MaxCompute へのアクセス権限を付与します。 | |
| EMR (新しいデータレイク) からメタデータを取得し、Data Map でデータレコードをプレビューします。 | |
| DataWorks の専用リソースグループとデータソース間のネットワーク接続を確立するために、VPC ネットワーク構成とセキュリティグループ構成を取得および変更します。 | |
| RAM ロールのリストを取得します。これにより、データソースにアクセスするためのロールを設定するときにロールを選択できます。 | |
| データソースの設定、タスクの設定、データの同期を行う際に、DataWorks が現在の Alibaba Cloud アカウント下の他のクラウドプロダクトのリソースにアクセスできるようにします。これには、RDS、Redis、MongoDB、PolarDB-X、HybridDB for MySQL、AnalyticDB for PostgreSQL、PolarDB、DMS、DLF などのクラウドリソースに対する一部の管理権限が含まれます。 | |
| DataWorks Open Platform のプロダクトメッセージおよびイベント機能をサポートするために、EventBridge のイベントを取得および変更します。 | |
| Data Lake Formation (DLF) からメタデータを取得し、メタデータ権限の付与や取り消しなどの操作を実行します。これにより、セキュリティセンターは DLF メタデータのリクエストと承認を管理できます。 | |
| EventBridge のリソースを管理し、OSS などの他のクラウドプロダクトのリソースにアクセスします。 |
以下のセクションでは、MaxCompute および EMR (新しいデータレイク) コンピュートエンジンに関連するロールについて説明します。
ロール 1: AliyunServiceRoleForDataworksEngine
ロール名: AliyunServiceRoleForDataworksEngine
目的: DataWorks がコンピュートエンジン (dataworks-engine) にアクセスするためのサービスリンクロール。dataworks-engine サービスはこのロールを使用して、他のクラウドサービスのリソースにアクセスします。
添付ポリシー: AliyunServiceRolePolicyForDataworksEngine
ポリシーの詳細:
{ "Version": "1", "Statement": [ { "Action": "odps:*", "Effect": "Allow", "Resource": "*" }, { "Action": [ "stream:ActOnBehalfOfAnotherUser", "stream:CreateDeployment", "stream:StartJobWithParams", "stream:ListDeployments", "stream:GetDeployment", "stream:GetJob", "stream:StopJob", "stream:DeleteDeployment" ], "Effect": "Allow", "Resource": "*" }, { "Action": "dlf-auth:ActOnBehalfOfAnotherUser", "Resource": "*", "Effect": "Allow" }, { "Action": [ "pai:*", "paiplugin:*", "eas:*", "featurestore:*" ], "Resource": "*", "Effect": "Allow" }, { "Effect": "Allow", "Action": [ "emr-serverless-spark:StartSessionCluster", "emr-serverless-spark:CreateSqlStatement", "emr-serverless-spark:GetSqlStatement", "emr-serverless-spark:TerminateSqlStatement", "emr-serverless-spark:ListSessionClusters", "emr-serverless-spark:ListWorkspaces", "emr-serverless-spark:ListWorkspaceQueues", "emr-serverless-spark:ListReleaseVersions", "emr-serverless-spark:CancelJobRun", "emr-serverless-spark:ListJobRuns", "emr-serverless-spark:GetJobRun", "emr-serverless-spark:StartJobRun", "emr-serverless-spark:AddMembers", "emr-serverless-spark:GrantRoleToUsers", "emr-serverless-spark:ListLogContents", "emr-serverless-spark:GetTemplate", "emr-serverless-spark:ListKyuubiServices", "emr-serverless-spark:GetLivyCompute", "emr-serverless-spark:CreateLivyCompute", "emr-serverless-spark:UpdateLivyCompute", "emr-serverless-spark:ListLivyCompute", "emr-serverless-spark:DeleteLivyCompute", "emr-serverless-spark:StartLivyCompute", "emr-serverless-spark:StopLivyCompute", "emr-serverless-spark:CreateLivyComputeToken", "emr-serverless-spark:GetLivyComputeToken", "emr-serverless-spark:ListLivyComputeToken", "emr-serverless-spark:DeleteLivyComputeToken", "emr-serverless-spark:RefreshLivyComputeToken" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "adb:SubmitSparkApp", "adb:GetSparkAppState", "adb:GetSparkAppLog", "adb:GetSparkAppWebUiAddress", "adb:ListSparkApps", "adb:GetSparkAppInfo", "adb:KillSparkApp", "adb:DescribeAdbMySqlTables", "adb:getDatabaseObjectsByFilter", "adb:getTable" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "lindorm:GetLindormInstanceList", "lindorm:GetLindormInstance", "lindorm:GetLindormInstanceEngineList", "lindorm:GetLindormV2InstanceEngineList", "lindorm:ListLdpsComputeGroups", "lindorm:RestartLdpsComputeGroup" ], "Resource": "*" }, { "Action": "ram:DeleteServiceLinkedRole", "Resource": "*", "Effect": "Allow", "Condition": { "StringEquals": { "ram:ServiceName": "engine.dataworks.aliyuncs.com" } } }, { "Action": [ "searchengine:GetInstance", "searchengine:ListInstances", "searchengine:GetTable", "searchengine:ListTables" ], "Resource": "*", "Effect": "Allow" } ] }
ロール 2: AliyunServiceRoleForDataworksOnEmr
自動的に作成されたロールとそのアクセスポリシーを変更または削除しないでください。そうしないと、DataWorks on EMR 機能が期待どおりに動作しない可能性があります。
ロール名: AliyunServiceRoleForDataworksOnEmr
目的: DataWorks が Data Map でデータレコードをプレビューし、DLF タイプの EMR クラスターからメタデータを取得し、EMR クラスターから構成情報を取得できるようにします。
添付ポリシー: AliyunServiceRolePolicyForDataworksOnEmr
ポリシーの詳細:
EMR アクセス権限
{ "Version": "1", "Statement": [ { "Action": [ "emr:GetCluster", "emr:GetOnKubeCluster", "emr:GetClusterClientMeta", "emr:GetApplicationConfigFile", "emr:ListClusters", "emr:ListNodes", "emr:ListNodeGroups", "emr:ListApplications", "emr:ListApplicationConfigs", "emr:ListApplicationConfigFiles", "emr:ListApplicationLinks", "emr:ListComponentInstances", "emr:DescribeClusterV2", "emr:DescribeCluster", "emr:DescribeClusterServiceConfig", "emr:DescribeFlowAgentToken", "emr:DescribeClusterBasicInfo", "emr:ListClusterHostComponent" ], "Resource": "*", "Effect": "Allow" } ] }Data Lake Formation (DLF) アクセス権限
EMR クラスターが DLF を使用してメタデータを一元管理する場合、自動的に作成されたロールのアクセスポリシーには、次の DLF アクセス権限も含まれます。これらの権限により、DataWorks は EMR からメタデータを取得できます。
{ "Action": [ "dlf:SubmitQuery", "dlf:GetQueryResult", "dlf:GetTable", "dlf:ListDatabases", "dlf:GetTableProfile", "dlf:GetCatalogSettings", "dlf:BatchGrantPermissions", "dlf:ListPartitionsByFilter", "dlf:ListPartitions", "dlf:GetHudiProperties", "dlf:ListCatalogs", "dlf:GetDatabase", "dlf:GetLifecycleRule", "dlf:GetCatalog", "dlf:GetIcebergNamespace", "dlf:GetIcebergTable" ], "Resource": "*", "Effect": "Allow" }Container Service for Kubernetes (ACK) アクセス権限
EMR クラスターが EMR on ACK クラスターである場合、自動的に作成されたロールのアクセスポリシーには、次の ACK アクセス権限も含まれます。
{ "Action": [ "cs:DescribeUserPermission", "cs:DescribeClusterDetail", "cs:DescribeClusterUserKubeconfig", "cs:GetClusters", "cs:GrantPermissions", "cs:RevokeK8sClusterKubeConfig" ], "Resource": "*", "Effect": "Allow" }Serverless Spark アクセス権限
EMR クラスターが EMR Serverless Spark クラスターである場合、自動的に作成されたロールのアクセスポリシーには、次の Serverless Spark アクセス権限も含まれます。
{ "Effect": "Allow", "Action": [ "emr-serverless-spark:StartSessionCluster", "emr-serverless-spark:CreateSqlStatement", "emr-serverless-spark:GetSqlStatement", "emr-serverless-spark:TerminateSqlStatement", "emr-serverless-spark:ListSessionClusters", "emr-serverless-spark:ListWorkspaces", "emr-serverless-spark:ListWorkspaceQueues", "emr-serverless-spark:ListReleaseVersions", "emr-serverless-spark:CancelJobRun", "emr-serverless-spark:ListJobRuns", "emr-serverless-spark:GetJobRun", "emr-serverless-spark:StartJobRun", "emr-serverless-spark:AddMembers", "emr-serverless-spark:GrantRoleToUsers", "emr-serverless-spark:ListLogContents", "emr-serverless-spark:GetTemplate", "emr-serverless-spark:ListKyuubiServices", "emr-serverless-spark:GetLivyCompute", "emr-serverless-spark:CreateLivyCompute", "emr-serverless-spark:UpdateLivyCompute", "emr-serverless-spark:ListLivyCompute", "emr-serverless-spark:DeleteLivyCompute", "emr-serverless-spark:StartLivyCompute", "emr-serverless-spark:StopLivyCompute", "emr-serverless-spark:CreateLivyComputeToken", "emr-serverless-spark:GetLivyComputeToken", "emr-serverless-spark:ListLivyComputeToken", "emr-serverless-spark:DeleteLivyComputeToken", "emr-serverless-spark:RefreshLivyComputeToken", "emr-serverless-spark:ListLogContents" ], "Resource": "*" }次の OSS 権限も含まれています。これらの権限により、SQL ファイルや JAR パッケージをアップロードしたり、一時的なクエリ結果を保存したりできます。
{ "Action": [ "oss:PutObject", "oss:GetObject", "oss:DeleteObject", "oss:DeleteObjectVersion" ], "Resource": [ "acs:oss:*:*:*/.dataworks/*", "acs:oss:*:*:*/.dlsdata/*" ], "Effect": "Allow" }, { "Action": "oss:PostDataLakeStorageFileOperation", "Resource": "*", "Effect": "Allow" }