認証
このページでは、Databricks 上の Kinesis コネクタの一般的な認証方法について説明します。Kinesis オプションの全リストについては、Kinesis を参照してください。
Unity Catalog接続で認証する
Databricks Runtime 19以降では、Unity Catalog接続を使用してKinesisに対して認証を行うことをDatabricksは推奨しています。接続はサービス資格情報を名前で参照するため、ノートブック、クエリー、またはLogにアクセスキーやロールARNを含める必要はありません。他のセキュリティ保護可能なオブジェクトと同様に、Unity Catalogの権限を使用して接続へのアクセスを管理します。接続がサポートしていないメソッドが必要な場合は、サービス資格情報または代替メソッドを使用してください。詳細については、Unity Catalog接続を参照してください。
Unity Catalog接続で認証するには、次の手順を実行します。
-
必要な権限を持つIAMロールを使ってDatabricksのサービス認証情報を作成します。ステップ1:IAMロールを作成するを参照してください。
- サービスの資格情報にアタッチされたIAMロールに、
ListShards、GetRecords、およびGetShardIteratorの権限があることを確認してください。
- サービスの資格情報にアタッチされたIAMロールに、
-
サービス認証情報を参照する
KINESISタイプの接続を作成します。- メタストアに対する
CREATE CONNECTION特権が必要です。 - カタログエクスプローラで接続を作成することもできます。 カタログ > 作成 > 接続の作成 をクリックします。接続の作成を参照してください。
SQLCREATE CONNECTION IF NOT EXISTS <connection-name> TYPE KINESIS
OPTIONS (aws_region '<aws-region>', credential '<service-credential-name>'); - メタストアに対する
-
ストリームを実行するユーザーまたはグループに、接続とそれが参照するサービス資格情報の両方へのアクセス権を付与します。
SQLGRANT USE CONNECTION ON CONNECTION <connection-name> TO <principal>;
GRANT ACCESS ON SERVICE CREDENTIAL <service-credential-name> TO <principal>; -
接続を使用してストリームを実行するには、
databricks.connectionソースオプションを接続名に設定します:
- Python
- Scala
df = (spark.readStream
.format("kinesis")
.option("databricks.connection", "<connection-name>")
.option("streamName", "<stream-name>")
.load()
)
val df = spark.readStream
.format("kinesis")
.option("databricks.connection", "<connection-name>")
.option("streamName", "<stream-name>")
.load()
Unity Catalog接続を使うと、その接続には認証情報と地域が記載されています。databricks.connection で以下の Spark オプションを設定しないでください。設定すると、ストリームは UC_CONNECTION_OPTION_CONFLICT エラーで失敗します:
serviceCredentialawsAccessKeyそしてawsSecretKeyregionroleArn、roleExternalId、およびroleSessionNameendpointそしてstsEndpoint
ストリーム ARN にはリージョンが含まれていますが、コネクタはそれを無視し、代わりに接続の aws_region を使用します。aws_region に、ストリームが存在するリージョンを設定します。
サービス資格情報で認証する
Databricks Runtime 16.1 以降では、Databricks サービス資格情報を使用して Kinesis に対して認証を行うことができます。Databricks では、Databricks Runtime 16.1 から 18 においてこの方法を推奨しています。Databricks Runtime 19 以降では、Unity Catalog 接続がシナリオに適さない場合にのみ、サービス資格情報を使用してください。サービス資格情報の作成を参照してください。
サービス資格情報を使用するには、次の手順を実行します:
- 必要な権限を持つIAMロールを使ってDatabricksのサービス認証情報を作成します。ステップ1:IAMロールを作成するを参照してください。
- ストリーミング読み取りを定義する際に、
serviceCredentialオプションを使用してサービス資格情報の名前を指定します。
Kinesis ソースには、 ListShards 、 GetRecords 、および 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アカウント間のアクセス権限の委譲」を参照してください。