Resource Access Management (RAM) ユーザーが他のクラウドリソースにアクセスできるようにするには、RAM ユーザーに必要な権限を付与する必要があります。このトピックでは、同一アカウントの権限付与とクロスアカウント認証の手順について説明します。
前提条件
AnalyticDB for MySQL の Enterprise Edition、Basic Edition、または Data Lakehouse Edition のクラスターが作成されていること。
Spark ジョブの権限
Spark ジョブを送信するには、次の 3 種類の権限が必要です。
権限 | 説明 |
次のいずれかの権限:
|
詳細については、「RAM ユーザーへの権限付与」をご参照ください。 |
AnalyticDB for MySQL のデータベースとテーブルに対する読み取り/書き込み権限 | AnalyticDB for MySQL は、デフォルトでデータベースアカウントを使用してデータベースとテーブルの権限を管理します。RAM ユーザーとして Spark ジョブを送信する際に、ジョブがデータの読み取りまたは書き込みを行う必要がある場合は、標準のデータベースアカウントを RAM ユーザーにアタッチする必要があります。詳細については、「データベースアカウントの RAM ユーザーへのアタッチまたはデタッチ」をご参照ください。 |
| このロールは、AnalyticDB for MySQL Spark が Object Storage Service (OSS) のディレクトリや Tablestore のデータなどの他のクラウドリソースにアクセスすることを承認するために使用されます。詳細については、「同一アカウントの権限付与」をご参照ください。 |
同一アカウントの権限付与
前提条件
RAM ユーザーを作成しました。
操作手順
RAM コンソールでの権限付与 (推奨)
ステップ 1:RAM ロールの作成と権限付与
RAM ロールを作成します。
説明[信頼できるエンティティの種類] を [Alibaba Cloud サービス] に、[信頼できるサービスの選択] を [クラウドネイティブデータウェアハウス AnalyticDB for MySQL] に設定した RAM ロールをすでに作成している場合は、このステップをスキップできます。
管理者権限を持つ RAM ユーザーとして RAM コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
[ロール] ページで、[ロールの作成] をクリックします。

[ロールの作成] ページで、[信頼できるエンティティの種類] を [Alibaba Cloud サービス] に、[信頼できるサービスの選択] を [クラウドネイティブデータウェアハウス AnalyticDB for MySQL] に設定します。その後、[OK] をクリックします。
[ロールの作成] ダイアログボックスで、[ロール名] パラメーターを設定し、[OK] をクリックします。
RAM ロールに権限を付与します。
[正確な権限付与] をクリックします。
[正確な権限付与] パネルで、ポリシーの種類を [システムポリシー] または [カスタムポリシー] に設定し、ポリシー名を入力します。
特定のクラウドリソースにのみアクセスしたい場合は、カスタムポリシーを作成する必要があります。詳細については、「カスタム権限ポリシーの作成」をご参照ください。
[OK] をクリックします。
ステップ 2:Spark ジョブの送信
RAM コンソールで RAM ロールを作成して権限を付与した後、ジョブを送信する際に Spark ジョブの構成で spark.adb.roleArn パラメーターを指定する必要があります。これにより、ジョブが実行可能になります。以下に設定例を示します。
{
"comments": [
"-- これは LakeCache を使用する一例です。内容を変更して、ご自身の Spark プログラムを実行してください。"
],
"args": ["oss://testBucketName/data/readme.txt"],
"name": "spark-oss-test",
"file": "oss://testBucketName/data/example.py",
"conf": {
"spark.adb.lakecache.enabled": "true";
"spark.adb.roleArn": "acs:ram::testAccountID:role/adbtest";
}
}クイック権限付与
クイック権限付与を使用すると、デフォルトで AliyunADBSparkProcessingDataRole ロールに AliyunADBSparkProcessingDataRolePolicy 権限が付与されます。このポリシーには、OSS、Tablestore、DMS などのクラウドリソースへのアクセス権限が含まれており、過剰な権限が付与される可能性があります。権限付与後に AliyunADBSparkProcessingDataRolePolicy 権限をデタッチすることを推奨します。その後、AliyunADBSparkProcessingDataRole ロールに必要なビジネス上の権限のみを付与してください。詳細については、「RAM ロールからの権限の取り消し」をご参照ください。
クイック権限付与リンクをクリックします。
説明RAM ユーザー管理権限を持つユーザーのみがクイック権限付与を使用できます。最低でも、RAM ロールの作成、RAM ポリシーの作成、RAM ロールのクエリ、RAM ポリシーのクエリの権限が必要です。
左下隅にある [権限付与に同意] ボタンをクリックします。
権限を付与すると、AnalyticDB for MySQL のために AliyunADBSparkProcessingDataRole サービスロールが自動的に作成されます。AnalyticDB for MySQL はこのロールを使用して他のクラウドリソースにアクセスします。
クロスアカウント認証
AnalyticDB for MySQL Spark は、他の Alibaba Cloud アカウントに属するクラウドリソースにアクセスできます。このセクションでは、例を用いてクロスアカウント権限を付与する方法を説明します。この例では、Alibaba Cloud アカウント A (UID:testAccountIDA) が Alibaba Cloud アカウント B (UID:testAccountIDB) に属するデータにアクセスする必要があります。
ステップ 1:アカウント B の RAM ロールの作成と権限付与
RAM ロールを作成し、アカウント A がこのロールを偽装できるようにします。
説明すでに RAM ロールを作成し、アカウント A がそれを偽装できるようにしている場合は、このステップをスキップできます。
Alibaba Cloud アカウント B またはアカウント B の RAM 管理者として RAM コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
[ロール] ページで、[ロールの作成] をクリックします。
[ロールの作成] ページで、[信頼できるエンティティの種類] を [Alibaba Cloud アカウント] に設定し、アカウントを指定して [OK] をクリックします。
ロール情報を設定します。
[ロール名] を入力します (例:
admin-oss)。任意: [メモ] を入力できます。
他の Alibaba Cloud アカウント で、他の Alibaba Cloud アカウント を選択し、Alibaba Cloud アカウント A の UID (
testAccountIDA) を入力します。
[完了] をクリックします。
RAM ロールに権限を付与します。
[正確な権限付与] をクリックします。
[正確な権限付与] パネルで、ポリシーの種類を [システムポリシー] または [カスタムポリシー] に設定し、ポリシー名を入力できます。
OSS へのアクセス
AliyunOSSReadOnlyAccess:OSS に対する読み取り専用権限を付与します。
AliyunOSSFullAccess:OSS に対する完全制御権限を付与します。OSS 外部テーブルに対して INSERT などのデータ更新操作を実行するには、この権限を RAM ロールに付与する必要があります。
特定の VPC 内のリソースへのアクセス
特定の VPC 内のリソースにアクセスするには、カスタムポリシーを作成する必要があります。ポリシーの `Resource` パラメーターで、リソースが属するセキュリティグループと vSwitch を指定します。詳細については、「カスタム権限ポリシーの作成」をご参照ください。
この例では、特定の VPC 内の ApsaraDB RDS for MySQL インスタンスにのみアクセスする権限を付与します。カスタムポリシーの名前は
eni_policyです。以下にポリシーのドキュメントを示します。説明ApsaraDB RDS for MySQL インスタンスにセキュリティグループを追加する必要があります。セキュリティグループのインバウンドルールとアウトバウンドルールは、ApsaraDB RDS for MySQL インスタンスのポートでのアクセスを許可する必要があります。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "ecs:*", "Resource": "acs:ecs:*:*:securitygroup/<RDS インスタンスが属するセキュリティグループの ID>" }, { "Effect": "Allow", "Action": "vpc:*", "Resource": "acs:vpc:*:*:vswitch/<RDS インスタンスが属する vSwitch の ID>" } ] }[OK] をクリックします。
[閉じる] をクリックします。
信頼ポリシーを変更して、アカウント A の任意の RAM ユーザーがこの RAM ロールを偽装できるようにします。
左側のナビゲーションウィンドウで、 を選択します。
[ロール] ページで、対象の RAM ロールの名前をクリックします。
[信頼ポリシー] タブで、[信頼ポリシーの編集] をクリックします。
エディターで信頼ポリシーのドキュメントを修正し、[OK] をクリックします。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::testAccountIDA:root" ] } }, { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "testAccountIDA@ads.aliyuncs.com" ] } } ], "Version": "1" }
ステップ 2:アカウント A の RAM ユーザーを作成し、RAM ロールを偽装する権限を付与
RAM ユーザーを作成します。
Alibaba Cloud アカウント A またはアカウント A の RAM 管理者として RAM コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
ユーザー ページで、ユーザーの作成 をクリックします。
ユーザーアカウント情報 セクションの ユーザーの作成 ページで、ユーザーの基本情報を設定します。
ログイン名 (必須):ログイン名には、英字、数字、ピリオド (.)、ハイフン (-)、アンダースコア (_) を使用できます。長さは 64 文字までです。
[表示名] (任意):表示名は 128 文字までです。
[タグ] (任意):
アイコンをクリックし、タグキーとタグ値を入力します。タグは RAM ユーザーの分類と管理に役立ちます。
説明ユーザーの追加 をクリックすると、複数の RAM ユーザーを同時に作成できます。
[アクセスモード] セクションで、パスワードによるコンソールログイン を選択します。その後、必要に応じてログインパスワード、パスワードリセットポリシー、多要素認証 (MFA) ポリシーを設定できます。詳細については、「コンソールアクセス」をご参照ください。
[OK] をクリックします。
RAM ユーザーが任意のロールを偽装できる権限ポリシーを作成します。
左側のナビゲーションウィンドウで、 を選択します。
[ポリシー] ページで、[ポリシーの作成] をクリックします。
[ポリシーの作成] ページで、[スクリプトエディター] タブをクリックします。
ポリシーのドキュメントを入力し、[OK] をクリックします。
{ "Version": "1", "Statement": [ { "Action": "ram:PassRole", "Resource": "*", "Effect": "Allow" } ] }[ポリシーの作成] ダイアログボックスで、[ポリシー名] と [説明] を入力し、[OK] をクリックします。
RAM ユーザーに権限を付与します。
左側のナビゲーションウィンドウで、 を選択します。
[ユーザー] ページで対象の RAM ユーザーを見つけ、[操作] 列の [権限の追加] をクリックします。
[権限の追加] パネルで、ステップ 2 で作成した権限を RAM ユーザーに付与します。
[OK] をクリックします。
[閉じる] をクリックします。