プロビジョニング a サービスプリンシパル by using Terraform
注:
代わりに Databricks ユーザー インターフェイスを使用して Databricks サービスプリンシパルをプロビジョニングするには、「サービス プリンシパルの管理」を参照してください。
サービスプリンシパルは、スクリプト、アプリ、CI/CDプラットフォームなどの自動化されたツールやシステムのIDです。、 user アカウントと personalDatabricks アクセストークンの代わりに、サービスプリンシパルとその トークンまたは personal アクセストークンを使用することをお勧めします。OAuthDatabricks次のような利点があります。
ユーザーとは無関係にリソースへのアクセスを許可および制限します。
これにより、ユーザーは自分のアクセストークンをより適切に保護できます。
他のユーザーに影響を与えずにサービスプリンシパルを無効化または削除します。
ユーザーが組織を離れるときに、サービスプリンシパルに影響を与えることなくユーザーを削除します。
次の手順に従って、Databricks Terraform プロバイダーを使用して Databricks ワークスペースに Databricks サービスプリンシパルを作成し、Databricks サービスプリンシパルの Databricks 個人用アクセストークンを作成します。
要件
プロバイダーが ワークスペース内の ユーザー アカウントの代わりに Databricksを呼び出すことができるようにするための personal アクセストークン。DatabricksTerraformDatabricksAPIsDatabricksDatabricks個人用アクセストークンを作成するには、「個人用アクセストークン認証Databricks」を参照してください。
Databricks CLI バージョン 0.205 以降で、対応する Databricks 個人用アクセストークンを参照する Databricks 認証構成プロファイルで構成されます。この設定プロファイルを作成するには、次の手順を実行します。
注:
次の手順では、Databricks CLIを使用して、
DEFAULT
という名前のDatabricks構成プロファイルを作成します。すでにDEFAULT
構成プロファイルをお持ちの場合、この手順により既存のDEFAULT
構成プロファイルが上書きされます。DEFAULT
構成プロファイルが既に存在するかどうかを確認し、存在する場合にこのプロファイルの設定を表示するには、Databricks CLIを使用してコマンドdatabricks auth env --profile DEFAULT
を実行します。DEFAULT
以外の名前の構成プロファイルを作成するには、次のdatabricks configure
コマンドの--profile DEFAULT
のDEFAULT
の部分を、構成プロファイルの別の名前に置き換えてください。この を使用して、 個人用アクセストークン認証を使用する DatabricksCLIという名前のDatabricks 構成プロファイル を作成します。
DEFAULT
Databricksこれを行うには、次のコマンドを実行します。databricks configure --profile DEFAULT
プロンプトDatabricks Hostに、Databricksワークスペース インスタンスのURLを入力します (例:
https://1234567890123456.7.gcp.databricks.com
)。プロンプトのPersonal Access Tokenに、ワークスペースのDatabricks個人用アクセストークンを入力します。
Terraform CLIです。 Terraformのダウンロードを参照してください。
Databricks サービスプリンシパルと Databricks personal アクセストークンを作成する
ターミナルで空のディレクトリを作成し、そのディレクトリに切り替えます。 Terraform構成ファイルの各個別のセットは、独自のディレクトリに存在する必要があります。 たとえば、
mkdir terraform_service_principal_demo && cd terraform_service_principal_demo
のようになります。mkdir terraform_service_principal_demo && cd terraform_service_principal_demo
この空のディレクトリに、
main.tf
という名前のファイルを作成します。 このファイルに次の内容を追加し、ファイルを保存します。警告
次の内容には、
authorization = "tokens"
の文が含まれています。 Databricks ワークスペースごとに存在できるauthorization = "tokens"
アクセス許可リソースは 1 つだけです。 次の変更を適用すると、以前にCAN_USE
またはCAN_MANAGE
のアクセス許可を持っていたユーザーは、トークンベースの認証へのアクセスが取り消されます。 それらのアクティブなトークンもすぐに削除されます(取り消されます)。 この操作は破壊的な性質を持つ可能性があるため、関連する設定はmain.tf
ファイルでコメント アウトされています。または、 Databricks ユーザー インターフェイスを使用して、 Databricks サービス プリンシパルが Databricks 個人用アクセス トークンを使用できるようにすることもできます。 「 個人用アクセストークンのアクセス許可を管理する」を参照してください。 また、Databricks ユーザー インターフェイスを使用して、Databricks サービスプリンシパルのDatabricks個人用アクセストークンを生成することもできます。「サービスプリンシパルのトークンの管理」を参照してください。
注:
次のコンテンツでは、 Databricks ワークスペース レベルでサービスプリンシパルを作成します。 Databricksワークスペースで ID フェデレーションが有効になっている場合、次のコンテンツもサービスプリンシパルを関連する Databricks アカウントに自動的に同期します (「管理者がユーザーをワークスペースに割り当てる方法」を参照)。ワークスペース レベルではなく、 アカウント レベルのみでサービスプリンシパルを作成するには、DatabricksAWSDatabricks DatabricksTerraformプロバイダーのドキュメントの サービス リソース の「 アカウントでのサービスプリンシパルの作成」セクションを参照してください。
次のリソースと出力のコメントを解除することを選択した場合、パーソナルアクセストークンも生成されます。 この個人用アクセストークンは、指定された Databricks ワークスペース内でのみ、サービスプリンシパルが自動化に使用できます。
パーソナルアクセストークンをサービスプリンシパルと一緒に使用して Databricks アカウントレベルの自動化を行うことはできません。 Databricks アカウント レベルでサービスプリンシパルの個人用アクセストークンを生成しようとすると、試行は失敗します。
variable "databricks_connection_profile" { description = "The name of the Databricks authentication configuration profile to use." type = string } variable "service_principal_display_name" { description = "The display name for the service principal." type = string } variable "service_principal_access_token_lifetime" { description = "The lifetime of the service principal's access token, in seconds." type = number default = 3600 } terraform { required_providers { databricks = { source = "databricks/databricks" } } } provider "databricks" { profile = var.databricks_connection_profile } resource "databricks_service_principal" "sp" { provider = databricks display_name = var.service_principal_display_name } # Uncomment the following "databricks_permissions" resource # if you want to enable the service principal to use # personal access tokens. # # Warning: uncommenting the following "databricks_permissions" resource # causes users who previously had either CAN_USE or CAN_MANAGE permission # to have their access to token-based authentication revoked. # Their active tokens are also immediately deleted (revoked). # # Alternatively, you can enable this later through the Databricks user interface. # # resource "databricks_permissions" "token_usage" { # authorization = "tokens" # access_control { # service_principal_name = databricks_service_principal.sp.application_id # permission_level = "CAN_USE" # } # } # # Uncomment the following "databricks_obo_token" resource and # "service_principal_access_token" output if you want to generate # a personal access token for service principal and then see the # generated personal access token. # # If you uncomment the following "databricks_obo_token" resource and # "service_principal_access_token" output, you must also # uncomment the preceding "databricks_permissions" resource. # # Alternatively, you can generate a personal access token later through the # Databricks user interface. # # resource "databricks_obo_token" "this" { # depends_on = [databricks_permissions.token_usage] # application_id = databricks_service_principal.sp.application_id # comment = "Personal access token on behalf of ${databricks_service_principal.sp.display_name}" # lifetime_seconds = var.service_principal_access_token_lifetime # } output "service_principal_name" { value = databricks_service_principal.sp.display_name } output "service_principal_id" { value = databricks_service_principal.sp.application_id } # Uncomment the following "service_principal_access_token" output if # you want to see the generated personal access token for the service principal. # # If you uncomment the following "service_principal_access_token" output, you must # also uncomment the preceding "service_principal_access_token" resource and # "databricks_obo_token" resource. # # output "service_principal_access_token" { # value = databricks_obo_token.this.token_value # sensitive = true # }
注:
このサービスプリンシパルを Databricks ワークスペース グループに追加し、Databricks ワークスペースのエンタイトルメントをこのサービスプリンシパルに追加するには、Terraform Web サイトの databricks_service_principal を参照してください。
同じディレクトリに、
terraform.tfvars
という名前のファイルを作成します。 次の内容をこのファイルに追加し、次の値を置き換えてから、ファイルを保存します。databricks_connection_profile
の値を、要件の認証構成プロファイルの名前に置き換えます。service_principal_display_name
値をサービスプリンシパルの表示名に置き換えます。service_principal_access_token_lifetime
の値を、サービスプリンシパルのアクセストークンの有効期間の秒数に置き換えます。
databricks_connection_profile = "<Databricks authentication configuration profile name>" service_principal_display_name = "<Service principal display name>" service_principal_access_token_lifetime = 3600
terraform init
コマンドを実行して、main.tf
ファイルを含む作業ディレクトリを初期化します。詳細については、Terraform ウェブサイトの「コマンド: 初期化」 を参照してください。terraform init
terraform validate
コマンドを実行して、設定に構文エラーがあるかどうかを確認します。詳細については、 Web サイトの「 コマンド: validate 」を参照してください。Terraformterraform validate
terraform apply
コマンドを実行して、目的とする状態に構成が達するように必要な変更を適用します。詳細については、Terraform ウェブサイトで 「コマンド: 適用」を参照してください。terraform apply
databricks_permissions
リソース、databricks_obo_token
リソース、およびservice_principal_access_token
出力のコメントを解除した場合、サービスプリンシパルのアクセストークンを取得するには、main.tf
ファイルを含む作業ディレクトリにあるterraform.tfstate
ファイル内のoutputs.service_principal_access_token.value
の値を確認します。