Microsoft Entra ID 外部インテグレーション設定

Prev Next

概要

COMETAでは、Snowflakeのデータストアに対する認証方法として、Microsoft Entra ID(旧:Microsoft Azure AD)を利用できます。
以下を設定することで、Snowflakeアカウントの認証時に、Microsoft Entra ID認証を利用できるようになります。

必要なロール

外部インテグレーション設定には、データストア管理者ロールが必要です。

データストアの新規連携

まず、データストアの新規連携手順について説明します。
なお、連携済みデータストアに認証したい場合は、連携済みデータストアの認証を参照ください。

事前準備

左サイドバーの管理・連携>MS Entra IDからMicrosoft Entra ID 外部インテグレーション設定画面を表示し、Snowflake認証用のリダイレクトURLをメモします。

Microsoft Entra ID側の設定

COMETAがMicrosoft Entra IDを介してSnowflakeにアクセスするためのクライアントアプリを登録します。
まずは、Microsoft Azureにログインし、Microsoft Entra IDをクリックします。
以降の手順を上から順に行ってください。

external-integration-settings-v2-2024-08-29-4-32-0

スコープ管理用アプリの登録

Snowflakeのロール情報を含んだスコープを管理するためのアプリを登録します。

  1. アプリの登録 > 新規登録をクリックします。アプリケーションの登録画面が表示されます。
    external-integration-settings-v2-2024-08-29-4-32-1

  2. アプリ名を適宜入力し、登録をクリックします。アプリが登録されます。
    なお、スコープ管理用アプリであることがわかるような命名を推奨しています。
    external-integration-settings-v2-2024-08-29-4-32-2

  3. API の公開 > Scope の追加をクリックします。
    external-integration-settings-v2-2024-08-29-4-32-3

  4. (はじめてスコープを追加する場合)保存してから続けるをクリックします。
    アプリケーション ID の URIはデフォルト値のままでも問題ありません。ただし、この値は後の手順で利用するのでメモしてください。
    external-integration-settings-v2-2024-08-29-4-32-4

  5. スコープ名を指定し、管理者とユーザーを選択して、スコープの追加をクリックします。スコープが追加されます。
    external-integration-settings-v2-2024-08-29-4-32-5

スコープ名について

session:scope:<SNOWFLAKE_ROLE>と入力する必要があります。
<SNOWFLAKE_ROLE>には、Snowflake側に存在する実際のロール名を入力します。
入力例:session:scope:sysadmin

なお、以下のロールの指定は非推奨としています。

  • ACCOUNTADMIN
  • ORGADMIN
  • SECURITYADMIN

これは後述のSnowflake側の手順で行うセキュリティインテグレーション設定において、デフォルトでは利用できないロールであるためです。
詳しくは、Snowflake公式ドキュメント - 外部 OAuth の概要を参照ください。

  1. 追加されたスコープのURIをメモします。
    external-integration-settings-v2-2024-08-29-4-32-6

クライアントアプリの登録

COMETAがMicrosoft Entra IDを介してSnowflakeにアクセスするための、クライアントアプリを登録します。

  1. アプリの登録 > 新規登録をクリックします。アプリケーションの登録画面が表示されます。

  2. 各種項目に下記の通り入力し、登録をクリックします。アプリが登録されます。
    external-integration-settings-v2-2024-08-29-4-32-7

  • 名前:クライアントアプリであることがわかるような命名を推奨しています。
  • リダイレクトURI:Webを選択し、事前準備で控えたリダイレクトURLを入力してください。
  1. 証明書とシークレット > 新しいクライアント シークレットをクリックします。
    external-integration-settings-v2-2024-08-29-4-32-8

  2. 各設定項目に適宜入力・指定し、追加をクリックします。クライアント シークレットが追加されます。

  3. 追加されたクライアント シークレットのをメモします。
    なお、この値は画面を更新すると確認できなくなります。メモし忘れないようにしてください。
    external-integration-settings-v2-2024-08-29-4-32-9

  4. API のアクセス許可 > アクセス許可の追加をクリックし、自分の APIタブより、スコープ管理用アプリの登録で追加したアプリを選択します。
    external-integration-settings-v2-2024-08-29-4-32-0

  5. スコープ管理用アプリの登録で追加したスコープに対してアクセス許可を有効にし、アクセス許可の追加をクリックします。
    external-integration-settings-v2-2024-08-29-4-32-1

  6. 概要 > エンドポイントをクリックし、以下の値をメモします。
    external-integration-settings-v2-2024-08-29-4-32-2

  • アプリケーション (クライアント) ID
  • OAuth 2.0 承認エンドポイント (v2)
  • OAuth 2.0 トークン エンドポイント (v2)
  • jwks_uri
    • OpenID Connect メタデータ ドキュメントのURLを直接開くことで、確認できます。
  • entityID
    • フェデレーション メタデータ ドキュメントのURLを直接開くことで、確認できます。

ユーザープリンシパル名の確認

いったんMicrosoft Entra ID画面トップに戻り、ユーザーをクリックします。
データストアに認証するユーザーのユーザー プリンシパル名をメモします。

Snowflake側の設定

Microsoft Entra IDのユーザーに対して、Snowflakeのデータアクセスを提供するためのセキュリティインテグレーションを行います。
Snowflakeにログインし、以降の手順を上から順に行ってください。

Microsoft Entra ID認証利用上の条件

Microsoft Entra ID認証を利用するためには、Microsoft Entra IDのユーザー プリンシパル名と、Snowflakeのユーザーのログイン名を一致させる必要があります。
なお、ユーザー プリンシパル名と一致させる対象は、Snowflakeのユーザー名でも表示名でもないことにご注意ください。
そのため、後述の手順1を忘れずに行うようにしてください。

  1. Microsoft Entra IDのユーザー プリンシパル名と、Snowflakeのユーザーのログイン名を一致させます。以下はサンプルクエリとなります。
ALTER USER <USERNAME> SET LOGIN_NAME = '<ENTRA_ID_PRINCIPAL_NAME>'
ログイン名変更の副作用

手順1のクエリを実行すると、Snowflakeのログイン名だけでなく、Snowflakeへのログイン時に用いるユーザー名も変更されます。ご留意ください。

  1. セキュリティインテグレーションを行います。以下はサンプルクエリとなります。
CREATE SECURITY INTEGRATION external_oauth_azure_2
  TYPE = external_oauth
  ENABLED = true
  EXTERNAL_OAUTH_TYPE = azure
  EXTERNAL_OAUTH_ISSUER = '<entityID>'
  EXTERNAL_OAUTH_JWS_KEYS_URL = '<jwks_uri>'
  EXTERNAL_OAUTH_AUDIENCE_LIST = ('<APPLICATION_ID_URI>')
  EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIM = 'upn'
  EXTERNAL_OAUTH_SNOWFLAKE_USER_MAPPING_ATTRIBUTE = login_name;

COMETA側の設定

Microsoft Entra ID設定

Microsoft Entra ID設定は、左サイドバーの管理・連携から表示できます。
各設定項目にこれまでにメモした値を入力し、保存をクリックします。

設定項目 入力内容
認可エンドポイント クライアントアプリの登録でメモした、OAuth 2.0 承認エンドポイント (v2) を入力します。
トークンエンドポイント クライアントアプリの登録でメモした、OAuth 2.0 トークン エンドポイント (v2) を入力します。
クライアントID クライアントアプリの登録でメモした、アプリケーション (クライアント) IDを入力します。
クライアントシークレット クライアントアプリの登録でメモした、クライアント シークレットの値を入力します。
スコープ スコープ管理用アプリの登録でメモした、スコープのURIを入力します。

external-integration-settings-v2-2024-08-29-4-32-3

データストアの認証

左サイドバーの管理・連携>データストア連携管理から、データストアの連携画面へ移動します。

  1. 任意のデータストア名を入力した状態で、認証方式でMicrosoft Entra ID認証を選択し、Microsoft Entra IDで認証するをクリックします。
    Microsoftアカウントのサインイン画面が表示されます。

  2. Microsoftにサインインし、表示される画面に沿って認証手順を進めます。

  3. Snowflakeのホスト名を入力し、ウェアハウス・ロールを入力して、利用開始をクリックします。
    なお、ロールには、スコープ管理用アプリの登録で指定したロール名を入力してください。

以上の手順で、データストアの新規連携は完了となります。

連携済みデータストアの認証

Microsoft Entra ID認証を利用する場合は、Microsoft Entra IDのユーザー プリンシパル名と、Snowflakeのユーザーのログイン名を一致させる必要があります。
あらかじめSnowflake側の設定の手順1を行った上で、認証を行ってください。

困ったときには

アセット一覧の更新がされない・実データの閲覧ができない

アセット一覧が更新されなくなったり、要約統計情報・プレビューなどの実データが閲覧できなくなった場合、クライアントシークレットの有効期限が切れている可能性があります。
この場合、クライアントシークレットを追加し直し、再認証を行ってください。