Databricks ジョブの ID、アクセス許可、および権限を管理する
この記事では、Databricks ジョブの ID、アクセス許可、および権限を管理するための推奨事項と手順について説明します。
Note
シークレットは、クラスターの Spark ドライバーのログ ストリーム stdout
と stderr
からは編集されません。 機密データを保護するため、既定では、ジョブに対する "管理可能" アクセス許可、シングル ユーザー アクセス モード、共有アクセス モード クラスターを設定されたユーザーのみが、Spark ドライバーのログを表示できます。 "アタッチ可能" または "再起動可能" アクセス許可を持つユーザーがこれらのクラスターのログを表示できるようにするには、クラスター構成で次の Spark 構成プロパティを設定します: spark.databricks.acl.needAdminPermissionToViewLogs false
。
"分離なし" 共有アクセス モード クラスターでは、"アタッチ可能" または "管理可能" アクセス許可を持つユーザーが Spark ドライバーのログを表示できます。 ログを閲覧できるユーザーを "管理可能" アクセス許可を持つユーザーのみに制限するには、spark.databricks.acl.needAdminPermissionToViewLogs
を true
に設定します。
クラスター構成に Spark プロパティを追加する方法については、「Spark の構成」を参照してください。
ジョブのデフォルトの権限
ジョブには、既定では次の権限が設定されています。
- ジョブの作成者には、IS OWNER アクセス許可が付与されます。
- ワークスペース管理者には、管理可能アクセス許可が付与されます。
- ジョブの作成者は、 Run as に設定されます。
ジョブの管理者アクセス許可
既定では、ワークスペース管理者は、ジョブ所有者または Run as 構成をワークスペース内の任意のユーザーまたはサービス プリンシパルに変更できます。 アカウント管理者は、このビヘイビアーを変更する RestrictWorkspaceAdmins
設定を構成できます。 「ワークスペース管理者を制限する」をご覧ください。
ジョブの Unity カタログのアクセス許可との対話方法
ジョブは、[実行するアカウント名] 設定のユーザーの ID として実行されます。 この ID は、次のアクセス許可付与に対して評価されます。
- テーブル、ボリューム、モデル、ビューなど、Unity カタログ管理アセット。
- レガシ Hive メタストアに登録されているアセットのレガシ テーブル アクセス制御リスト (ACL)。
- コンピューティング、ノートブック、クエリ、およびその他のワークスペース資産の ACL。
- Databricks シークレット。 「シークレットの管理」を参照してください。
Note
Unity カタログの許可とレガシ テーブル ACL には、互換性のあるコンピューティング アクセス モードが必要です。 「ジョブのコンピューティングの構成」を参照してください。
SQL タスクとアクセス許可
ファイル タスクは、 Run as を完全に考慮する唯一の SQL タスクの種類です。
SQL クエリ、アラート、およびレガシ ダッシュボード タスクでは、構成された共有設定が考慮されます。
- 所有者として実行: スケジュールされた SQL タスクの実行では、構成された SQL アセットのオーナーの ID が常に使用されます。
- 視聴者として実行: スケジュールされた SQL タスクの実行では、常にジョブ [Run as] フィールドに設定された ID が使用されます。
クエリ共有設定の詳細については、「クエリのアクセス許可を構成する」を参照してください。
例
次のシナリオは、SQL 共有設定とジョブ [Run as] 設定の相互作用を示しています。
- ユーザー A は、
my_query
という名前の SQL クエリの所有者です。 - ユーザー A は、所有者として実行共有設定を使用して
my_query
を構成します。 - ユーザー B は、
my_job
という名前のジョブのタスクとしてmy_query
をスケジュールします。 - ユーザー B は、
prod_sp
という名前のサービス原則を使用して実行するようにmy_job
を構成します。 my_job
を実行すると、ユーザー A の ID を使用してmy_query
を実行します。
ここで、ユーザー B がこのビヘイビアーを望まないと仮定します。 既存の構成から、次の処理が行われます。
- ユーザー A は、
my_query
の共有設定をビューアーとして実行するに変更します。 my_job
が実行されると、識別子prod_sp
が使用されます。
ジョブ実行の ID を構成する
Run as 設定を変更するには、ジョブに対して管理可能または所有者アクセス許可を持っている必要があります。
自分自身、または自分がサービス プリンシパル ユーザー エンタイトルメントを持つワークスペース内の任意のサービス プリンシパルを [別のユーザーとして実行] 設定の設定対象にすることができます。
ワークスペース UI でジョブの Run as 設定を構成するには、次の手順に従って既存のジョブを選択します。
- サイドバーの [ワークフロー] をクリックします。
- [名前] 列で、ジョブ名をクリックします。
- [ジョブの詳細] サイド パネルで、[実行] フィールドの横にある鉛筆アイコンをクリックします。
- ユーザー、またはサービス プリンシパルを検索して選択します。
- [保存] をクリックします。
サービス プリンシパルの使用方法の詳細は、以下をご覧ください。
ジョブ ガバナンスのベスト プラクティス
Databricks では、すべての生産ジョブに対して次のことをお勧めします。
サービス プリンシパルにジョブの所有権を割り当てる
ジョブを所有しているユーザーが組織を離れた場合、ジョブが失敗する可能性があります。 サービス プリンシパルを使用して、従業員チャーンに対してジョブの信頼性を高めます。
既定では、ワークスペース管理者はジョブのアクセス許可を管理し、必要に応じて所有権を再割り当てできます。
サービス プリンシパルを使用して生産ジョブを実行する
ジョブは、既定ではジョブ所有者の権限を使用して実行されます。 サービス プリンシパルに所有権を割り当てる場合、ジョブ実行ではサービス プリンシパルのアクセス許可が使用されます。
生産ジョブにサービス プリンシパルを使用すると、生産データに対する書き込みアクセス許可を制限できます。 ユーザーのアクセス許可を使用してジョブを実行する場合、ジョブに必要な生産データを編集するには、そのユーザーと同じアクセス許可が必要です。
Unity カタログ互換のコンピューティング構成を常に使用する
Unity Catalog データ ガバナンスでは、サポートされているコンピューティング構成を使用する必要があります。
ジョブと SQL ウェアハウスのサーバーレス コンピューティングでは、常に Unity カタログが使用されます。
クラシック コンピューティングを使用するジョブの場合、Databricks では、サポートされているワークロードに対して共有アクセス モードが推奨されます。 必要に応じて、シングル ユーザー アクセス モードを使用します。
Unity Catalog を使用して構成された Delta Live Tables パイプラインにはいくつかの制限があります。 「制限事項」を参照してください。
生産ジョブのアクセス許可を制限する
ジョブの実行をトリガー、停止、または再起動するユーザーには、 実行管理可能 アクセス許可が必要です。
ジョブの構成またはモニターの実行を表示するユーザーには、 表示可能 アクセス許可が必要です。
管理可能または Is Owner 権限のみを、運用コードを変更するために信頼されたユーザーに付与します。
ジョブへのアクセスを制御する
ジョブのアクセス制御により、ジョブの所有者と管理者は、ジョブに対してきめ細かいアクセス許可を付与できます。 次のアクセス許可を使用できます。
Note
各アクセス許可には、その下にあるアクセス許可の許可が次の表に含まれています。
権限 | Grant |
---|---|
所有者です | 既定で Run as に使用される ID。 |
管理可能 | ユーザーは、アクセス許可を含め、ジョブ定義を編集できます。 ユーザーはスケジュールを一時停止および再開できます。 |
実行管理可能 | ユーザーはジョブの実行をトリガーおよびキャンセルすることができます。 |
表示可能 | ユーザーはジョブの実行結果を表示できます。 |
ジョブ権限レベルについては、「ジョブ ACL」を参照してください。
ジョブのアクセス許可を構成する
ワークスペース UI でジョブのアクセス許可を構成するには、次の手順を使用して既存のジョブを選択します。
- サイドバーの [ワークフロー] をクリックします。
- [名前] 列で、ジョブ名をクリックします。
- [ジョブの詳細] パネルで [アクセス許可の編集] をクリックします。 [アクセス許可の設定] ダイアログが表示されます。
- [ユーザー、グループ、またはサービス プリンシパルの選択...] フィールドをクリックし、ユーザー、グループ、またはサービス プリンシパルの入力を開始します。 このフィールドは、ワークスペース内で使用可能なすべての ID を検索します。
- [追加] をクリックします。
- [保存] をクリックします。
ジョブ所有者を管理する
ワークスペース管理者のみがジョブ所有者を編集できます。 ジョブ所有者を 1 人だけ割り当てる必要があります。 ジョブ所有者は、ユーザーまたはサービス プリンシパルにすることができます。