すべてのプロダクト
Search
ドキュメントセンター

Realtime Compute for Apache Flink:RAM ロールを使用したクラウドリソースへのアクセス (ベータ版)

最終更新日:Aug 28, 2026

Realtime Compute for Apache Flink では、名前空間で RAM ロールを参照できます。ジョブは RAM ロールを引き受けることで、平文の AccessKey ペアの代わりに一時的な STS トークンを使用して Alibaba Cloud リソースにアクセスします。これにより、クレデンシャルフリーアクセス、きめ細かなアクセス制御、メンテナンスフリーの認証情報管理が可能になります。

概要

RAM ロールを参照することで、ジョブコードに平文の AccessKey ペアを公開することなく、そのロールを使用して Flink ジョブから OSS や KMS などの他の Alibaba Cloud サービスにアクセスできます。

主な利点:

  • 機密情報の保護:ジョブ内で AccessKey ペアが公開されることはありません。RAM ロールの STS トークンが静的な認証情報に置き換わります。

  • きめ細かなアクセス制御:RAM ロールの権限ポリシーはカスタマイズ可能です。異なるコネクタが異なるロールを使用することで、最小権限の原則を適用できます。

  • メンテナンスフリーの認証情報:STS トークンはシステムによって自動的に取得および更新されるため、認証情報のローテーションを管理する必要はありません。

詳細については、「付録:STS呼び出しフロー」をご参照ください。

注意事項

RAM で RAM ロールの権限や信頼ポリシーを誤って削除または変更すると、Flink ジョブがクラウドリソースにアクセスできなくなり、失敗する可能性があります。Realtime Compute for Apache Flinkのサービスレベルアグリーメントに基づき、お客様による不適切なリソース使用に起因する利用不能は SLA の対象外となります。

制限事項

  • VVR 11.8 以降のエンジンの OSS コネクタおよび Postgres CDC コネクタでのみサポートされています。

  • ワークスペースごとに最大 10 個の RAM ロールを参照できます。

  • 1 回の追加操作で選択できるロールは最大 5 つです。

  • 参照できるのは通常のサービスロール (SR) のみです。サービスリンクロール (SLR) はサポートされていません。

  • STS トークンは、PyFlink および Flink JAR ジョブのローカルデバッグではサポートされていません。ジョブは使用前にクラスターにデプロイする必要があります。

  • Alibaba Cloud サービスの RAM による ID 認証のみがサポートされています。

権限の準備

  • ステップ 1 とステップ 2:オペレーターには AliyunRAMFullAccess ポリシーが付与されているか、または RAM ロール管理と権限管理の権限が個別に付与されている必要があります。詳細については、「カスタムポリシーの作成」および「RAM ロール管理と権限管理のAPI概要」をご参照ください。

  • ステップ 3:オペレーターは、Flink 名前空間に対する編集者以上の権限を持っているか、RAM ロールを参照してジョブを開発するためのきめ細かな権限が付与されている必要があります。詳細については、「開発コンソールへのアクセス権限の付与」をご参照ください。

ステップ 1:RAM ロールの作成と設定

このロールは、Flink サービスが他のクラウドリソースにアクセスするためのID 認証情報です。Flink はこのロールを引き受けることで一時的な認証情報を取得し、そのロールの権限でクラウドリソースにアクセスします。

1. RAM ロールの作成

  1. RAM コンソール - ロールページにログインし、[Create Role] をクリックします。デフォルトのオプション (信頼されたエンティティは現在の Alibaba Cloud アカウント) を維持し、[OK] をクリックします。

  2. FlinkRoleForOSSRead のような、認識しやすいロール名を入力し、[OK] をクリックします。

2. 信頼ポリシーの追加

Flink は RAM ロールを引き受けて一時的な認証情報を取得します。RAM ロールは、Flink による引き受けを許可する必要があります。

ロールが作成された後、ロール詳細ページで [Trust Policy] タブをクリックし、[Edit Trust Policy] をクリックします。"Service": ["stream.aliyuncs.com"]Principal に追加して、Flink がロールを引き受けることを信頼するようにします。詳細については、「RAM ロールの信頼ポリシーの変更」をご参照ください。

{
  "Statement": [
    {
      "Action": "sts:AssumeRole",
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "stream.aliyuncs.com"
        ]
      }
    }
  ],
  "Version": "1"
}

3. クラウドリソースへのアクセス権限の付与

Flink は RAM ロールの ID を使用してクラウドリソースにアクセスします。アクセスエラーを防ぐために、事前に必要な権限を RAM ロールに付与してください。

ロール詳細ページで [Permissions] タブをクリックし、[Grant Permission] をクリックして、対象のクラウドリソースにアクセスするための権限をロールに付与します。

たとえば、OSS にアクセスするには、AliyunOSSReadOnlyAccess (読み取り専用) または AliyunOSSFullAccess (全アクセス) 権限を付与します。詳細については、「RAM ロールへの権限付与」をご参照ください。

ステップ 2:RAM ユーザーへの権限付与

権限ポリシーを作成し、それを RAM ユーザーに付与します。これにより、ユーザーはステップ 1 で作成した RAM ロールを Flink サービスに渡して、引き受けさせることができます。

説明

ステップ 3 の RAM ユーザーがすでに AliyunRAMFullAccess または AliyunStreamFullAccess ポリシーに関連付けられている場合、ユーザーはすでに PassRole 権限を持っています。このステップはスキップできます。

権限ポリシーの作成

RAM コンソール - ポリシーページにログインし、[Create Policy] をクリックします。[Script] モードに切り替えて、ポリシーの内容を編集します。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ram:ListRoles"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "ram:PassRole",
      "Resource": "acs:ram::<account-id>:role/<role-name>",
      "Condition": {
        "StringEquals": {
          "acs:Service": "stream.aliyuncs.com"
        }
      }
    }
  ]
}

権限

説明

ram:ListRoles

ユーザーがアカウント配下のロールリストを表示できるようにし、Flink コンソールでロールを選択できるようにします。

ram:PassRole

ユーザーが指定したロールを Flink サービスに渡すことを許可します。ポリシー内の <account-id><role-name> を実際の値に置き換えてください:

  • <account-id>:Alibaba Cloud アカウントの UID。

  • <role-name>:ステップ 1 で作成した RAM ロールの名前。

Condition を追加して、ロールの受け渡しを stream.aliyuncs.com のみに制限します。

[OK] をクリックして、FlinkPassRolePolicy のようにポリシーを保存します。詳細については、「カスタムポリシーの作成」をご参照ください。

RAM ユーザーへの権限付与

  1. RAM コンソール - ユーザーページにログインします。権限を付与する RAM ユーザーを見つけ、[Actions] 列の [Add Permissions] をクリックします。

  2. [Add Permissions] パネルで、ステップ 2 で作成したポリシー (例: FlinkPassRolePolicy) を検索して選択し、[Confirm] をクリックします。詳細については、「RAMユーザーへの権限付与」をご参照ください。

ステップ 3:Flink での RAM ロールの参照

ステップ 2 で権限を付与されたユーザーは、ステップ 1 の RAM ロールを Flink に渡すことができます。Flink はそのロールを引き受けて一時的な認証情報を取得し、そのロールの権限でクラウドリソースにアクセスします。

RAM ロール参照の追加

  1. Realtime Compute コンソールにログインし、対象のワークスペースに入ります。

  2. 左側のナビゲーションペインで、[Security Services] > [Access Security] を選択します。

  3. [RAM Roles] タブをクリックします。

  4. [Reference RAM Role] をクリックします。

  5. ダイアログボックスで、以下を設定します:

    項目

    必須

    説明

    RAM role

    はい

    ドロップダウンリストからロールを選択します。ロール名によるあいまい検索と複数選択 (1 回の操作で最大 5 つ) が可能です。すでに参照されているロールは再度選択できません。

    説明
    • ロールリストには、現在の名前空間を所有する Alibaba Cloud アカウント配下の通常のサービスロールが含まれます。

    • オペレーターは現在の名前空間と同じ Alibaba Cloud アカウントに属しており、ロールを表示するための ListRoles 権限を持っている必要があります。

    Description

    いいえ

    ロールの説明。最大 256 文字。

  6. [Test] をクリックします。システムは自動的に以下の 2 項目をチェックします:

    • PassRole 権限チェック:現在のユーザーが、選択された RAM ロールに対する ram:PassRole 権限を持っているか。

    • 信頼ポリシーチェック:選択された RAM ロールが、現在の Flink 名前空間による引き受けを信頼しているか。

  7. チェックに合格したら、[OK] をクリックします。

ジョブでの RAM ロールの使用

RAM ロールが参照された後、ジョブコードで akless.assume-role.role-name パラメーターを使用してロール名を指定します。Flink はそのロールを引き受けて一時的な STS トークンを取得し、そのロールの権限でクラウドリソースにアクセスします。

説明

この機能は、VVR 11.8 以降のエンジンの OSS コネクタと Postgres CDC コネクタでのみサポートされています。

パラメーターの説明

パラメーター

タイプ

必須

説明

akless.assume-role.role-name

String

いいえ

RAM ロールの名前 (例: oss-read)。ロールは、事前に [Access Security] > [RAM Roles] で参照されている必要があります。そうでない場合、ジョブの送信は失敗します。

優先順位ルール

  • AccessKey ペア (accessKeyId + accessKeySecret) が明示的に指定されている場合、AccessKey ペアが最優先されます。

  • AccessKey ペアが指定されておらず、akless.assume-role.role-name が指定されている場合、ロールの STS トークンが使用されます。

  • ジョブ内の異なるコネクタは、異なる akless.assume-role.role-name の値を指定することで、異なるロールを使用できます。

OSSの例

[Deployment Details] タブの [Runtime Parameters] 配下にある [Other Configuration] に以下の設定を追加します:

# OSS
fs.oss.bucket.<bucketName>.akless.assume-role.role-name: <your-role-name>
fs.oss.inner.bucket: <workspace-associated-bucket-name>

# OSS-HDFS
fs.oss.jindo.akless.assume-role.role-name: <your-role-name>

パラメーター

説明

<bucketName>

対象ファイルシステムのパスパラメーター (path) にあるバケット名。

<workspace-associated-bucket-name>

ワークスペースリストページの [Storage Type] フィールドを確認して、ワークスペースが自己管理の OSS バケットを使用しているか、フルマネージドストレージを使用しているかを判断し、それに応じてバケット名を取得します:

  • OSS bucket:ワークスペース詳細ダイアログボックスで、[OSS Bucket] フィールドを見つけます。これが現在のワークスペースに関連付けられている OSS バケット名です。

  • Fully managedflink-fullymanaged-<workspace-id> (例: flink-fullymanaged-db12345678)。ワークスペース ID は詳細ダイアログボックスで確認できます。

<your-role-name>

OSS へのアクセスに使用される RAM ロールの名前。

RAM ロール参照の管理

説明

Flink で RAM ロールを編集または削除しても、Flink の RAM ロールへの参照にのみ影響します。RAM ロール自体を直接変更するものではありません。

RAM ロールの編集

  1. [Security Services] > [Access Security] > [RAM Roles] で、対象のロールを見つけ、[Actions] 列の [Edit] をクリックします。

  2. ダイアログボックスで、説明を変更します。ロール名は変更できません。

  3. [Test] をクリックします。チェックに合格したら、[OK] をクリックします。

RAM ロールの削除

重要

RAM ロールを削除すると、現在の名前空間でそのロールを参照しているすべてのジョブが失敗します。注意して進めてください。

  1. [Security Services] > [Access Security] > [RAM Roles] で、対象のロールを見つけ、[Actions] 列の [Remove] をクリックします。

  2. 確認ダイアログボックスで、ロール名を入力し、[Confirm Removal] をクリックします。

ロールステータスの更新

RAM ロールリストの右上隅にある [Refresh] をクリックして、参照されているすべてのロールのステータスを一括で確認します。

ステータス

説明

正常

ロールは RAM に存在し、その信頼ポリシーで Flink による引き受けが許可されています。

Abnormal

ロールが RAM から削除されたか、信頼ポリシーが Flink による引き受けを許可していません。このロールを参照しているジョブは異常に実行される可能性があります。

付録:STS呼び出しフロー

Alibaba Cloud RAM は、主要な 2 つのロール関連認可モデルを提供します:直接的な引き受け (AssumeRole) と委任による承認 (PassRole) です。

モデル1:直接的な引き受け (sts:AssumeRole)

  • 主要なアクション:信頼されたエンティティ (RAM ユーザーやアプリケーションなど) が、自ら STS の AssumeRole API を呼び出して RAM ロールの一時的な認証情報を取得し、実質的にそのロールになります。

  • 認可チェーンエンティティ Asts:AssumeRoleを呼び出すロール R を引き受けるロール R の権限を取得する

  • 権限要件:エンティティ A には sts:AssumeRole 権限が付与されている必要があります。

  • 典型的なシナリオ:ECS またはローカルサーバーで実行されているアプリケーションが、一時的に OSS にアクセスする必要がある場合。アプリケーションは自身の AccessKey ペアを使用して AssumeRole を呼び出し、一時的な認証情報を取得して、それを使用して OSS にアクセスします。このシナリオでは、エンティティ A が実行主体です。

モデル2:委任による承認 (ram:PassRole)

  • 主要なアクション:エンティティ (RAM ユーザーなど) が、RAM ロールをクラウドサービス (Flink など) に「渡し」、そのサービスがロールを引き受けることを承認します。ユーザー自身はロールを引き受けません。

  • 認可チェーン:ユーザー B → ロール A を渡す → クラウドサービスへ → クラウドサービスが sts:AssumeRole を呼び出してロール A を引き受ける → クラウドサービスがロール A の権限を取得する。

  • 権限要件:ユーザー B には ram:PassRole 権限が付与されている必要があり、かつロール A はクラウドサービスによる引き受けを信頼している必要があります。

  • 典型的なシナリオ:開発者 (ユーザー B) が Flink コンソールでジョブを開発し、ロール (ロール A) を指定する場合。Flink サービスがユーザーに代わってクラウドリソースにアクセスできるようにするには、ユーザーがロール A を Flink サービスに渡す権限を持っている必要があります。このシナリオでは、ユーザーが承認者であり、クラウドサービスが実行者です。