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 コンソールでの権限付与 (推奨)
ステップ 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 ロールから権限を取り消す」をご参照ください。
クイック権限付与リンク をクリックします。
左下隅にある [同意して承認] ボタンをクリックします。
権限を付与すると、AliyunADBSparkProcessingDataRole サービスロールが AnalyticDB for MySQL 用に自動的に作成されます。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/<The ID of the security group to which the RDS instance belongs>" }, { "Effect": "Allow", "Action": "vpc:*", "Resource": "acs:vpc:*:*:vswitch/<The ID of the vSwitch to which the RDS instance belongs>" } ] }[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] をクリックします。
[閉じる] をクリックします。