Slide 1

Slide 1 text

【中級者向け】 Synapse Analyticsの データアクセスあれこれ Microsoft MVP for Data Platform 2021 永田 亮磨 Twitter:@ryomaru0825 Linkedin:ryoma-nagata-0825 Qiita:qiita.com/ryoma-nagata

Slide 2

Slide 2 text

1. Synapse 周辺のアクセス制御全体像 2. Synapse RBAC基本まとめ 3. 分析機能別アクセス制御仕様について 1. ストレージエクスプローラー 2. SQL スクリプト(SQLアクセス) 3. 統合データセット 4. Sparkノートブック ※尺の状況次第でデモを割愛します AGENDA

Slide 3

Slide 3 text

データ機能 Azure Data Lake Storage Gen2 専用 SQL Pool サーバレス SQL Pool 分析機能 (Synapse Studio) SQLスクリプト ストレージ エクスプローラー ノートブック データセット アクセス制御 (データ機能側で設定) Azure RBAC/ACL SQL Server権限制御 Azure Synapseにまつわるアクセス制御は複数のアクセス制御機能で成り立つ。 用語: • Synapse Workspace=分析作業のためのコラボレーションスペース。Azureリソースとしてデプロイする、 Synapse Analyticsのインスタンス(という理解)。 • Synapse Studio=分析作業を行うためのWeb UI Synapse 周辺のアクセス制御のイメージ アクセス制御 ( Synapse RBACロール) Synapse User Synapse 管理者 Synapse 共同作成者 ... Synapse Workspace

Slide 4

Slide 4 text

基本的な構成は以下の5つのロール。 Synapse RBAC基本まとめ • Synapse ワークスペースのアクセス制御を設定する方法 - Azure Synapse Analytics | Microsoft Docs ロール 概要 ワークスペース 権限管理 サーバレス SQL Pool 権限管理 (dbロールでも実 施可) 専用SQL Pool 権限管理 (dbロールでも実 施可) パイプライン、 データフロー、リ ンクドサービス (テスト不可)な どの成果物作成 データセットプレ ビュー、リンクド サービステスト、 デバッグ、トリ ガーの紐づけ Spark poolや、統 合ランタイムの監 視 ※作成にはAzure RBACが必要 Synapse管理者 ワークスペースの 全体管理 〇 〇 × 〇 〇 〇 Synapse共同作 成者 開発者向けロール × × × 〇 × 〇 Synapse資格情 報ユーザー 疎通確認まで行う 開発者向けロール × × × × 〇 × Synapse コン ピューティング オペレーター 運用監視者向け ロール × × × × × 〇 SQL AD管理者 (既定では作成 者=Synapse管 理者に割当て) 専用SQLプールの 管理 × × 〇 × × × 組み合わせて利用する

Slide 5

Slide 5 text

Synapse 共同作成者の権限補足 • デバッグ、トリガー紐づけはできない • トリガー自体の編集はできる • プレビューもできない このあたりの作業をする人に資格情報ユーザーを付与する ※リンクサービスで設定した資格情報でのデータ表示・実行になるので注意

Slide 6

Slide 6 text

• 前提知識 • Synapse Studio上で発生するデータアクセスは、「自分のID」によるものと、 「Synapse WorkspaceのマネージドID」によるものがある • 例:データレイクへのアクセス権付与状態(全てのフォルダが見える権限 機能別のアクセス制御について 私のID Synapse WorkspaceのマネージドID 自分の代理でアクセスするシーンで権限使用 自分の権限でアクセスするシーンで権限使用

Slide 7

Slide 7 text

AD認証時はAzure Portalだとこの時の状態 • AD認証/アカウントキーでのアクセス が使用される • 必要なアクセス許可は • AD認証の場合:前述の Blobデータxxxロール割り当てか、 データレイクのACL設定で行う • キー認証の場合:共同作成者などを割 り当てる 機能別のアクセス制御について ストレージエクスプローラー in Synapse Studio Synapse Studio

Slide 8

Slide 8 text

ACL設定例 • フォルダ、ファイルレベルの詳細なアクセス制御にはACLを利用する フォルダに権限有 ※既定=配下に作成された フォルダに継承される権限 フォルダに権限なし

Slide 9

Slide 9 text

以下の仕様のため、 「見せたい対象のフォルダの親階層まで読み取りと実行を振る」必要がある。 • 読み取り:フォルダを参照するのに必要 • 実行:フォルダの内容に進むために必要(配下のフォルダで読み取りできるものが表示) また、コンテナに関してはルートディレクトリという扱いで以下の設定が必要 • ACL設定・・・ルートディレクトリの内容閲覧権限 • Azure RBACの「閲覧者ロール」・・・ストレージアカウントの表示権限 ACL補足 • Azure Data Lake Storage Gen2 のアクセス制御リスト | Microsoft Docs

Slide 10

Slide 10 text

• 専用SQL Pool、サーバレスSQL Poolに対する 権限により接続される。 • 専用SQL Poolの場合 • Synapse RBAC, Azure RBAC との関連:なし • SQL AD管理者にsysadminが付与されることを除 き、SQL Pool内での権限制御となる。 (SQL Serverと”ほぼ”同じように行う) • サーバレスSQL Poolの場合 • Synapse RBACとの関連:Synapse管理者、 Synapse SQL管理者にsysadminが付与される • Azure RBACとの関連:なし • 管理者アクセス以外は、SQL Pool内で権限制御をす る(SQL Serverと同じように行う) 機能別のアクセス制御について SQLスクリプト in Synapse Studio

Slide 11

Slide 11 text

• サーバレス SQL PoolのsysadminにはSynapse管理者 or Synapse SQL 管理者が割り当て サーバレスSQL Pool上のSynapse Workspace マネージドIDの権限設定について • sys.server_principals (Transact-sql) - SQL Server | Microsoft Docs Synapse RBACの割り当て状態 サーバレス SQL Poolでの確認結果

Slide 12

Slide 12 text

• SQL Pool管理画面でプロパティを設定すると、SQL PoolへのCONTROL権 限が付与される 専用SQL Pool上のSynapse Workspace マネージドIDの権限設定について • Synapse ワークスペースのマネージド ID にアクセス許可を付与する - Azure Synapse Analytics | Microsoft Docs Synapse Studio上のSQL Pool管理画面 専用SQL Poolでの確認結果

Slide 13

Slide 13 text

Azure Data Lake Storage Gen2 • 以下のテーブルでは、外部データソースへのアクセスが発生するため、Data Lake側のデータアクセス設定が必要 • サーバレスSQL Pool上のテーブルとビュー • 専用SQL Pool上の外部テーブル • データアクセスの権限チェックとCREDENTIAL(資格情報)について • 既定設定(CREDENTIALを設定しない)だと、呼び出し元のAADアカウントに対する権限をチェックする • Synapse WorkspaceのマネージドIDや、ストレージアカウントキーなどを使用するCREDENTIALを作成し、DATA_SOURCEオブジェクト に利用すると、呼び出し元のアカウントに関わらず、CREDENTIALの内容でデータアクセスをする 外部テーブルについて 専用 SQL Pool サーバレス SQL Pool 外部テーブル CREDENTIAL 外部テーブル Azure Data Lake Storage Gen2 呼び出し元の権限でアクセス CREDENTIALで設定した資格情報でアクセス (たとえばSynapseマネージドIDに設定した権限)

Slide 14

Slide 14 text

• 資格情報を含まない外部テーブル デモ 資格情報を含まない外部テーブル • データレイクの権限持ちユーザー • データレイクの権限持たないユーザー (Synapse SQL管理者) テーブルオブジェクト自体へ の権限はあるが、データに 権限がない

Slide 15

Slide 15 text

• 資格情報を含まない外部テーブル デモ 資格情報を含む外部テーブル • データレイクの権限持ちユーザー • データレイクの権限持たないユーザー (Synapse SQL管理者) Synapse WorkspaceマネージドID に設定された権限を使用してアクセス

Slide 16

Slide 16 text

• 既定でマネージドIDでリンクサービスが作成されている。 • データフローなどでプレビューする権限を持つユーザー(資格情報ユーザなど)は データストアへの自身の権限設定は関係なく、Synapse Workspaceの マネージドIDでデータにアクセスする(不慮のデータ漏洩に注意) 機能別のアクセス制御について 統合データセット 利用 リンクサービス Synapse Studio上でのデータセットのプレビュー

Slide 17

Slide 17 text

• データレイク・SQL Pool共に既定では、実行者のAADアカウントでデータにアク セスする • Studio上でのアドホック実行→自分のIDでAD認証アクセス • パイプラインからのノートブック実行→Synapse WorkspaceマネージドIDでAD認証 アクセス • 専用SQL Poolへのアクセスには、SQL認証ユーザも利用可能 機能別のアクセス制御について Sparkノートブック • サーバーレス Apache Spark プールと SQL プールの間でのデータのインポートとエクスポート - Azure Synapse Analytics | Microsoft Docs

Slide 18

Slide 18 text

• Synapse 管理者/資格情報ユーザー (workspace/credentials/use/actionもち)はリンクサービスの情報を利用 して、データレイクやKey Vaultにアクセス可能 ※Token Libraryを使用せずに直接SASキーを使用することもできるが割愛 機能別のアクセス制御について Sparkノートブック Token library • Apache Spark for Azure Synapse Analytics でリンクされたサービスを使用してアクセス資 格情報をセキュリティで保護する - Azure Synapse Analytics | Microsoft Docs

Slide 19

Slide 19 text

デモユーザ(DEUser01)の権限状態: データレイクには権限のない状態+リンクサービスの利用権限を持つ • ➀既定のアクセス(AADパススルー) • ②TokenLibraryを経由のリンクサービス使用のアクセス • ※リンクサービスの利用権限を持たない場合、失敗する Tips: • ➀と②を同じセッション内では、実施できない。➀を実施した時点で、AADパススルーとし て初期化されてしまう仕様 • Token Library経由のリンクサービス利用は、Synapse RBACでリンクサービスの利用 権限を持たなくても使用できる不具合状態だったが、9/14日ごろに修正された デモ Token library