RAM ユーザーを使用して他のクラウドリソースにアクセスする場合、このドキュメントを参照して、シナリオ (同一アカウントまたはクロスアカウント) に基づいて RAM ユーザーに必要な権限を付与できます。このトピックでは、同一アカウントでの権限付与とクロスアカウントでの権限付与の詳細な手順について説明します。
前提条件
クラスターは、Enterprise Edition、Basic Edition、または Lakehouse Edition である必要があります。
Spark ジョブの権限
Spark ジョブを送信するには、次の 3 種類の権限が必要です。
権限 | 説明 |
次のいずれかの権限:
|
具体的な操作については、「RAM ユーザーへの権限付与」をご参照ください。 |
AnalyticDB for MySQL データベースとテーブルに対する読み取りおよび書き込み権限 | AnalyticDB for MySQL では、デフォルトでデータベースアカウントを使用して、データベースとテーブルの権限を管理します。RAM ユーザーとして Spark ジョブを送信する際、Spark ジョブがデータの読み取りまたは書き込みを必要とする場合は、標準のデータベースアカウントを RAM ユーザーにバインドする必要があります。具体的な操作については、「RAM ユーザーとデータベースアカウントのバインドまたはバインド解除」をご参照ください。 |
| AnalyticDB for MySQL Spark が OSS ディレクトリや OTS データなどの他のクラウドリソースにアクセスすることを許可するためのロールです。具体的な操作については、「同一アカウントでの権限付与」をご参照ください。 |
同一アカウントでの権限付与
前提条件
操作手順
RAM コンソール経由での権限付与 (推奨)
ステップ 1:RAM ロールの作成と権限の付与
RAM ロールを作成します。
説明[Trusted Entity Type] が [Alibaba Cloud Service] で、[Trusted Entity] が [AnalyticDB for MySQL] である RAM ロールを既に作成している場合は、この手順をスキップして次の手順に進むことができます。
RAM 管理者として RAM コンソールにログインします。
左側メニューで、 を選択します。
[Roles] ページで、[Create Role] をクリックします。
[Create Role] ページで、[Trusted Entity Type] を [Alibaba Cloud Service] に設定し、[Trusted Entity] として [AnalyticDB for MySQL] を選択して、[OK] をクリックします。
[Create Role] ダイアログボックスで、[Role Name] を入力し、[OK] をクリックします。
RAM ロールに権限を付与します。
[Grant Permission by Policy] をクリックします。
[Grant Permission by Policy] パネルで、ポリシータイプを [System Policy] または [Custom Policy] に設定し、ポリシー名を入力します。
特定のクラウドリソースのみにアクセスする場合は、カスタムポリシーを作成する必要があります。詳細については、「カスタムポリシーの作成」をご参照ください。
[OK] をクリックします。
ステップ 2:Spark ジョブの送信
RAM コンソールで RAM ロールを作成して権限を付与した後、Spark ジョブを送信する際に、ジョブが正常に実行されるように、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、Table Store、DMS などのクラウドリソースへのアクセス権限が含まれており、過剰な権限付与につながる可能性があります。権限付与後に、AliyunADBSparkProcessingDataRolePolicy ポリシーを削除し、AliyunADBSparkProcessingDataRole ロールにビジネスで必要な権限のみを付与することを推奨します。
クイック権限付与リンクをクリックします。
説明RAM ユーザー管理権限 (少なくとも RAM ロールの作成、RAM ポリシーの作成、RAM ロールの照会、RAM ポリシーの照会の権限) を持つユーザーのみがクイック権限付与を実行できます。
左下隅の [Confirm Authorization] をクリックします。
権限付与後、AnalyticDB for MySQL が使用するサービスロール AliyunADBSparkProcessingDataRole が自動的に作成されます。AnalyticDB for MySQL はこのロールを使用して他のクラウドリソースにアクセスします。
クロスアカウントでの権限付与
AnalyticDB for MySQL Spark は、他の Alibaba Cloud アカウントのすべてのクラウドリソースへのアクセスをサポートしています。このトピックでは、Alibaba Cloud アカウント A (ID が testAccountIDA のプライマリアカウント) が Alibaba Cloud アカウント B (ID が testAccountIDB のプライマリアカウント) のデータにアクセスする例を基に、クロスアカウントでの権限付与の手順を説明します。
ステップ 1:アカウント B の RAM ロールを作成し、権限を付与
RAM ロールを作成し、アカウント A がこの RAM ロールを引き受けることを許可します。
説明既に RAM ロールを作成し、アカウント A がその RAM ロールを引き受けることを許可している場合は、この手順をスキップして次の手順に進むことができます。
Alibaba Cloud アカウント B (プライマリアカウント) または RAM 管理者を使用して、 RAM コンソールにログインします。
左側メニューで、 を選択します。
[Roles] ページで、[Create Role] をクリックします。
[Create Role] ページで、[Trusted Entity Type] として [Alibaba Cloud Account] を選択し、Alibaba Cloud アカウントを指定して、[OK] をクリックします。
ロール情報を設定します。
[Role Name] を入力します。この例では、ロール名を
admin-ossに設定します。任意:[Description] を入力します。
[Trusted Alibaba Cloud Account] を [Other Alibaba Cloud Account] に設定し、アカウント A の UID (
testAccountIDA) を入力します。
[Complete] をクリックします。
RAM ロールにポリシーを使用して権限を付与します。
[Grant Permission by Policy] をクリックします。
[Grant Permission by Policy] パネルで、ポリシータイプを [System Policy] または [Custom Policy] に設定し、ポリシー名を入力します。
OSS へのアクセス
AliyunOSSReadOnlyAccess:OSS リソースを読み取る権限。
AliyunOSSFullAccess:OSS を管理する権限。OSS 外部テーブルに対して INSERT などのデータ更新操作を実行する必要がある場合は、この権限を RAM ロールに付与する必要があります。
指定された VPC 内のリソースへのアクセス
指定された VPC 内のリソースにアクセスする場合は、カスタムポリシーを作成し、Resource パラメーターでセキュリティグループと vSwitch を指定する必要があります。詳細については、「カスタムポリシーの作成」をご参照ください。
この例では、指定された VPC 内の ApsaraDB RDS for MySQL インスタンスへのアクセスのみが許可されます。カスタムポリシー名は
eni_policyで、ポリシーの内容は次のとおりです。説明RDS MySQL インスタンスにセキュリティグループを追加し、セキュリティグループルールで RDS MySQL ポートへのインバウンドおよびアウトバウンドアクセスを許可する必要があります。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "ecs:*", "Resource": "acs:ecs:*:*:securitygroup/<Security group ID of the ApsaraDB RDS instance>" }, { "Effect": "Allow", "Action": "vpc:*", "Resource": "acs:vpc:*:*:vswitch/<vSwitch ID of the ApsaraDB RDS instance>" } ] }[OK] をクリックします。
[Close] をクリックします。
信頼ポリシーを変更して、アカウント A 配下の任意の RAM ユーザーがこの RAM ロールを引き受けることを許可します。
左側メニューで、 を選択します。
[Roles] ページで、対象の RAM ロールの名前をクリックします。
[Trust Policy] タブで、[Edit Trust Policy] をクリックします。
エディターで信頼ポリシーの内容を変更し、[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 (プライマリアカウント) または RAM 管理者を使用して、 RAM コンソールにログインします。
左側メニューで、 を選択します。
[Users] ページで、[Create User] をクリックします。
[Create User] ページの [User Account Information] セクションで、基本的なユーザー情報を設定します。
[Logon Name] (必須):英字、数字、ピリオド (.)、ハイフン (-)、アンダースコア (_) を使用できます。最大長:64 文字。
[Display Name] (任意):最大長:128 文字。
[Tag] (任意):
をクリックし、タグによるユーザー管理のためにタグキーとタグ値を入力します。
説明[Add User] をクリックすると、一度に複数の RAM ユーザーを作成できます。
[Access Method] セクションで [Console Access] を選択し、必要に応じてコンソールのログオンパスワード、パスワードリセットポリシー、MFA ポリシーを設定します。詳細については、「コンソールアクセス」をご参照ください。
[OK] をクリックします。
ポリシーを作成し、RAM ユーザーが任意のロールを引き受けることを許可します。
左側メニューで、 を選択します。
[Policies] ページで、[Create Policy] をクリックします。
[Create Policy] ページで、[Script Editor] タブをクリックします。
ポリシーの内容を入力し、[OK] をクリックします。
{ "Version": "1", "Statement": [ { "Action": "ram:PassRole", "Resource": "*", "Effect": "Allow" } ] }[Create Policy] ダイアログボックスで、[Policy Name] と [Description] を入力し、[OK] をクリックします。
RAM ユーザーに権限を付与します。
左側のナビゲーションペインで、 を選択します。
[Users] ページで、対象の RAM ユーザーの [Actions] 列にある [Add Permissions] をクリックします。
[Add Permissions] パネルで、前の手順で作成したポリシーを RAM ユーザーに追加します。
[Confirm] をクリックします。
[Close] をクリックします。