$30 off During Our Annual Pro Sale. View Details »

Synapse Analytics Access Control

Ryoma Nagata
September 25, 2021

Synapse Analytics Access Control

46th Microsoft Data Platform Day(Online)
「Azure Synapse Analytics上のデータ認可あれこれ」登壇資料

https://sqlserver.connpass.com/event/216907/

Ryoma Nagata

September 25, 2021
Tweet

More Decks by Ryoma Nagata

Other Decks in Technology

Transcript

  1. 【中級者向け】 Synapse Analyticsの データアクセスあれこれ Microsoft MVP for Data Platform 2021

    永田 亮磨 Twitter:@ryomaru0825 Linkedin:ryoma-nagata-0825 Qiita:qiita.com/ryoma-nagata
  2. 1. Synapse 周辺のアクセス制御全体像 2. Synapse RBAC基本まとめ 3. 分析機能別アクセス制御仕様について 1. ストレージエクスプローラー

    2. SQL スクリプト(SQLアクセス) 3. 統合データセット 4. Sparkノートブック ※尺の状況次第でデモを割愛します AGENDA
  3. データ機能 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
  4. 基本的な構成は以下の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プールの 管理 × × 〇 × × × 組み合わせて利用する
  5. Synapse 共同作成者の権限補足 • デバッグ、トリガー紐づけはできない • トリガー自体の編集はできる • プレビューもできない このあたりの作業をする人に資格情報ユーザーを付与する ※リンクサービスで設定した資格情報でのデータ表示・実行になるので注意

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

    私のID Synapse WorkspaceのマネージドID 自分の代理でアクセスするシーンで権限使用 自分の権限でアクセスするシーンで権限使用
  7. AD認証時はAzure Portalだとこの時の状態 • AD認証/アカウントキーでのアクセス が使用される • 必要なアクセス許可は • AD認証の場合:前述の Blobデータxxxロール割り当てか、

    データレイクのACL設定で行う • キー認証の場合:共同作成者などを割 り当てる 機能別のアクセス制御について ストレージエクスプローラー in Synapse Studio Synapse Studio
  8. ACL設定例 • フォルダ、ファイルレベルの詳細なアクセス制御にはACLを利用する フォルダに権限有 ※既定=配下に作成された フォルダに継承される権限 フォルダに権限なし

  9. 以下の仕様のため、 「見せたい対象のフォルダの親階層まで読み取りと実行を振る」必要がある。 • 読み取り:フォルダを参照するのに必要 • 実行:フォルダの内容に進むために必要(配下のフォルダで読み取りできるものが表示) また、コンテナに関してはルートディレクトリという扱いで以下の設定が必要 • ACL設定・・・ルートディレクトリの内容閲覧権限 •

    Azure RBACの「閲覧者ロール」・・・ストレージアカウントの表示権限 ACL補足 • Azure Data Lake Storage Gen2 のアクセス制御リスト | Microsoft Docs
  10. • 専用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
  11. • サーバレス 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での確認結果
  12. • SQL Pool管理画面でプロパティを設定すると、SQL PoolへのCONTROL権 限が付与される 専用SQL Pool上のSynapse Workspace マネージドIDの権限設定について •

    Synapse ワークスペースのマネージド ID にアクセス許可を付与する - Azure Synapse Analytics | Microsoft Docs Synapse Studio上のSQL Pool管理画面 専用SQL Poolでの確認結果
  13. 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に設定した権限)
  14. • 資格情報を含まない外部テーブル デモ 資格情報を含まない外部テーブル • データレイクの権限持ちユーザー • データレイクの権限持たないユーザー (Synapse SQL管理者)

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

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

    リンクサービス Synapse Studio上でのデータセットのプレビュー
  17. • データレイク・SQL Pool共に既定では、実行者のAADアカウントでデータにアク セスする • Studio上でのアドホック実行→自分のIDでAD認証アクセス • パイプラインからのノートブック実行→Synapse WorkspaceマネージドIDでAD認証 アクセス

    • 専用SQL Poolへのアクセスには、SQL認証ユーザも利用可能 機能別のアクセス制御について Sparkノートブック • サーバーレス Apache Spark プールと SQL プールの間でのデータのインポートとエクスポート - Azure Synapse Analytics | Microsoft Docs
  18. • Synapse 管理者/資格情報ユーザー (workspace/credentials/use/actionもち)はリンクサービスの情報を利用 して、データレイクやKey Vaultにアクセス可能 ※Token Libraryを使用せずに直接SASキーを使用することもできるが割愛 機能別のアクセス制御について Sparkノートブック

    Token library • Apache Spark for Azure Synapse Analytics でリンクされたサービスを使用してアクセス資 格情報をセキュリティで保護する - Azure Synapse Analytics | Microsoft Docs
  19. デモユーザ(DEUser01)の権限状態: データレイクには権限のない状態+リンクサービスの利用権限を持つ • ➀既定のアクセス(AADパススルー) • ②TokenLibraryを経由のリンクサービス使用のアクセス • ※リンクサービスの利用権限を持たない場合、失敗する Tips: •

    ➀と②を同じセッション内では、実施できない。➀を実施した時点で、AADパススルーとし て初期化されてしまう仕様 • Token Library経由のリンクサービス利用は、Synapse RBACでリンクサービスの利用 権限を持たなくても使用できる不具合状態だったが、9/14日ごろに修正された デモ Token library