メインコンテンツまでスキップ

認証

このページでは、Databricks 上の Kinesis コネクタの一般的な認証方法について説明します。Kinesis オプションの全リストについては、Kinesis を参照してください。

Unity Catalog接続で認証する

Databricks Runtime 19以降では、Unity Catalog接続を使用してKinesisに対して認証を行うことをDatabricksは推奨しています。接続はサービス資格情報を名前で参照するため、ノートブック、クエリー、またはLogにアクセスキーやロールARNを含める必要はありません。他のセキュリティ保護可能なオブジェクトと同様に、Unity Catalogの権限を使用して接続へのアクセスを管理します。接続がサポートしていないメソッドが必要な場合は、サービス資格情報または代替メソッドを使用してください。詳細については、Unity Catalog接続を参照してください。

Unity Catalog接続で認証するには、次の手順を実行します。

  1. 必要な権限を持つIAMロールを使ってDatabricksのサービス認証情報を作成します。ステップ1:IAMロールを作成するを参照してください。

    • サービスの資格情報にアタッチされたIAMロールに、ListShardsGetRecords、およびGetShardIteratorの権限があることを確認してください。
  2. サービス認証情報を参照する KINESIS タイプの接続を作成します。

    • メタストアに対する CREATE CONNECTION 特権が必要です。
    • カタログエクスプローラで接続を作成することもできます。 カタログ > 作成 > 接続の作成 をクリックします。接続の作成を参照してください。
    SQL
    CREATE CONNECTION IF NOT EXISTS <connection-name> TYPE KINESIS
    OPTIONS (aws_region '<aws-region>', credential '<service-credential-name>');
  3. ストリームを実行するユーザーまたはグループに、接続とそれが参照するサービス資格情報の両方へのアクセス権を付与します。

    SQL
    GRANT USE CONNECTION ON CONNECTION <connection-name> TO <principal>;
    GRANT ACCESS ON SERVICE CREDENTIAL <service-credential-name> TO <principal>;
  4. 接続を使用してストリームを実行するには、databricks.connectionソースオプションを接続名に設定します:

Python
df = (spark.readStream
.format("kinesis")
.option("databricks.connection", "<connection-name>")
.option("streamName", "<stream-name>")
.load()
)
注記

Unity Catalog接続を使うと、その接続には認証情報と地域が記載されています。databricks.connection で以下の Spark オプションを設定しないでください。設定すると、ストリームは UC_CONNECTION_OPTION_CONFLICT エラーで失敗します:

  • serviceCredential
  • awsAccessKey そして awsSecretKey
  • region
  • roleArnroleExternalId 、および roleSessionName
  • endpoint そして stsEndpoint

ストリーム ARN にはリージョンが含まれていますが、コネクタはそれを無視し、代わりに接続の aws_region を使用します。aws_region に、ストリームが存在するリージョンを設定します。

サービス資格情報で認証する

Databricks Runtime 16.1 以降では、Databricks サービス資格情報を使用して Kinesis に対して認証を行うことができます。Databricks では、Databricks Runtime 16.1 から 18 においてこの方法を推奨しています。Databricks Runtime 19 以降では、Unity Catalog 接続がシナリオに適さない場合にのみ、サービス資格情報を使用してください。サービス資格情報の作成を参照してください。

サービス資格情報を使用するには、次の手順を実行します:

  1. 必要な権限を持つIAMロールを使ってDatabricksのサービス認証情報を作成します。ステップ1:IAMロールを作成するを参照してください。
  2. ストリーミング読み取りを定義する際に、serviceCredentialオプションを使用してサービス資格情報の名前を指定します。
注記

Kinesis ソースには、 ListShardsGetRecords 、および GetShardIterator 権限が必要です。Amazon: Access Denied 例外が発生した場合は、IAMロールにこれらの権限があることを確認してください。詳細については、「IAM を使用した Amazon Kinesis Data Streams リソースへのアクセスの制御」を参照してください。

代替の認証方法

Databricks Runtime 16.0以下では、Databricksサービス資格情報は使用できません。Databricksには、以下の代替認証方法があります。

インスタンスプロファイル

コンピュート構成時にインスタンスプロファイルをアタッチします。See インスタンスプロファイル.

標準アクセスモード(旧共有アクセスモード)では、インスタンスプロファイルはサポートされていません。標準コンピュートの要件と制限事項を参照してください。

アクセスキーの使用

awsAccessKey および awsSecretKey オプションを設定します。

Databricks では、Databricks シークレットを使用してキーを保存することを推奨しています。「シークレットの管理」を参照してください。

IAMロールを引き受ける

IAM ロールを引き受けるには、roleArn オプションをそのロールの ARN に設定します。コンピュートにはロールを引き受ける権限が必要です。そのため、その権限でクラスターを起動するか、awsAccessKey および awsSecretKey オプションを設定してください。必要に応じて、roleExternalId および roleSessionName を設定できます。

このメソッドはクロスアカウント認証をサポートしています。詳細については、「IAMロールを使用したAWSアカウント間のアクセス権限の委譲」を参照してください。