Entra ID SQL 認証を設定する。

Azure Marketplace からの Nerdio Manager

セキュリティポリシーが SQL Server での Entra ID 認証を要求する場合、ユーザーのアイデンティティはローカル SQL Server ユーザーセットではなく、Entra ID によって中央管理されます。この記事では、管理された SQL Server をローカル認証から混合モードに変換し、 のサービスプリンシパルを使用して認証するように Nerdio Manager

注記

  • Nerdio Manager

  • 制限されたネットワークアクセスを持つ App Services は、Microsoft 認証 URL への接続性が必要です。詳細については、VNet 統合ファイアウォール要件を参照してください。

前提条件

      RBAC と権限

Nerdio Manager ロールが必要です。最小権限の原則 (PoLP) に従い、この手順が要求する以上の権限を持つアカウントを使用しないでください。

       準備手順

この手順を実行する前に、Entra ID の Nerdio Manager

  • アプリケーション名 :これは SQL データベースに db_owner として追加されます。

  • アプリケーション ID :これは更新された接続文字列内で必要です。

Entra ID 管理者を割り当て、SQL Server に接続してください。

  1. Azure ポータルで、 Nerdio Manager > Microsoft Entra ID を選択します。SQL ServerでEntra ID管理者としてユーザーアカウントを割り当てます。

  2. SQL Server Management Studioを使用して、ホストされたSQL Serverに接続し、Entra ID管理者アカウントでサインインします。

    警告

    上記の前提条件に記載されているように、使用するアカウントには、最低限、最小特権 Contributor ロールが必要です。

  3. Nerdio Manager

    1. Nerdio Manager

    2. 設定 > 概要 に移動し、サーバー名をコピーしてください。

    3. SSMS で、サーバー名を サーバー名 フィールドに貼り付けてください。

    4. 認証では、ほとんどの環境で Microsoft Entra ID - Universal with MFA を選択してください。

    5. ユーザー名フィールドには、ステップ1で SQL Server に割り当てられた Entra ID 管理者のアカウントを指定してください。

      注記

      クライアントIPアドレスがSQL Serverのネットワーキングルールに存在しない場合、追加するように求められることがあります。Azureポータルで Nerdio Manager

  4. SSMS ツールバーで、クエリを実行する前にデータベースのドロップダウンが nmw-app-db を表示していることを確認してください。masterデータベースに対してクエリを実行すると、ロール 'db_owner' を変更できませんというエラーが発生します。

設定クエリを実行してください。

  1. 次のクエリを実行して、Nerdio Managerとして追加します。nerdio-nmw-app をあなたのNerdioエンタープライズアプリ名に置き換え、角括弧を保持してください。これはエンタープライズアプリ名であり、アプリサービス名ではありません。

    CREATE USER [nerdio-nmw-app] FROM EXTERNAL PROVIDER
                                            ALTER ROLE db_owner ADD MEMBER [nerdio-nmw-app];
  2. 次のクエリを実行して、現在 db_owner ロールに割り当てられているすべてのユーザーを表示することで変更を検証してください。 のアプリケーションが結果に表示されることを確認します。

    SELECT members.name as 'members_name', roles.name as 'roles_name',
                                                    roles.type_desc as 'roles_desc', members.type_desc as 'members_desc'
                                                    FROM sys.database_role_members rolemem
                                                    INNER JOIN sys.database_principals roles ON rolemem.role_principal_id = roles.principal_id
                                                    INNER JOIN sys.database_principals members ON rolemem.member_principal_id = members.principal_id
                                                    WHERE roles.name = 'db_owner'
                                            ORDER BY members.name

Key Vault接続文字列を更新してください。

  1. Azure ポータルで、Key Vaultに移動し、 Key Vaultを選択します。名前は nmw-app-kv-* のパターンに従います。

  2. 左のブレードで、オブジェクトの下にある シークレット を選択してください。

    注記

    シークレットの読み取りと変更を行う前に、アカウントのアクセスを有効にする必要がある場合があります。Key Vault で 設定 > アクセス ポリシー に移動し、これを設定してください。

  3. AzureAD-ClientSecret の値をコピーしてください。これは、現在 が認証に使用しているシークレットです。

    注記

    また、Entra ID ポータルで新しいシークレットを生成することもできます。新しいシークレットは、既存のシークレットと並行して追加されます。

  4. ConnectionStrings--DefaultConnectionの値を開き、進む前に現在の接続文字列のバックアップコピーを作成してください。既存の文字列は次の形式に従います:

    Server=tcp:nmw-app-sql-<unique value>.database.windows.net,1433;Initial Catalog=nmw-app-db;Persist Security Info=False;User ID=<local SQL user>;Password=<local SQL password>;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
  5. 環境に特有の App ID とクライアントシークレットでプレースホルダー値を置き換え、以下の形式を使用して更新された接続文字列を構築してください。Authentication=およびDatabase=パラメータが含まれていることを確認してください。

    Server=tcp:nmw-app-sql-<unique value>.database.windows.net,1433;Authentication=Active Directory Service Principal;Database=nmw-app-db;Initial Catalog=nmw-app-db;Persist Security Info=False;User ID=<Nerdio Entra ID app ID>;Password=<app client secret>;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;

    注記

    ユーザーIDの値はエンタープライズ アプリ ID であり、エンタープライズ アプリ オブジェクト IDではありません。認証Active Directory サービスプリンシパルに設定したままにしてください。以下のパラメータは、元の接続文字列から更新されています。

    • サーバー — Nerdio SQL Server に設定

    • 認証Active Directory サービスプリンシパルに設定

    • データベース — Nerdio データベース名に設定

    • Initial Catalog — Nerdio データベース名に設定

    • ユーザー ID — エンタープライズ アプリ ID に設定

    • パスワードAzureAD-ClientSecret の値に設定

  6. Nerdio Manager > シークレットに移動し、ConnectionStrings—DefaultConnectionを選択します。既存のシークレットは直接置き換えることができないため、次のように新しいバージョンを作成します。

    1. [+ 新しいバージョン] を選択します。

    2. 更新された接続文字列をシークレット値フィールドに入力してください。

    3. 他のすべてのパラメータは既定のままにし、作成を選択します。

App Service を再起動し、認証を完了してください。

  1. Azureポータルで、アプリサービスに移動し、アプリサービスを選択します。

  2. 停止を選択し、その後開始を選択します。

  3. Nerdio Manager

    1. Azureポータルで、 Nerdio Manager

    2. 設定 > Microsoft Entra IDに移動します。

    3. 認証を Entra ID のみに制限するオプションを選択してください。

    注記

    • アクセス確認の前に、再起動後数分お待ちください。接続文字列が無効もしくは権限が正しく設定されていない場合、 Nerdio Manager

    • 問題が発生した場合は、元の接続文字列を置き換え、App Service を再起動して機能を復元してください。

追加のリソース

この記事は役に立ちましたか?

0人中0人がこの記事が役に立ったと言っています
他にご質問がございましたら、リクエストを送信してください

コメント (0件のコメント)

サインインしてコメントを残してください。