Entra ID SQL 認証を設定する。
Nerdio Manager を Azure Marketplace から展開する際に、App Service、Key Vault、Log Analytics、App Insights、Azure Automation、管理された SQL Server およびデータベースを含むいくつかの Azure サービスがプロビジョニングされます。デフォルトでは、管理された SQL Server はローカル認証のみを使用します。資格情報は、ConnectionStrings—DefaultConnection に保存された接続文字列内の Key Vault に格納されています。
セキュリティポリシーが SQL Server での Entra ID 認証を要求する場合、ユーザーのアイデンティティはローカル SQL Server ユーザーセットではなく、Entra ID によって中央管理されます。この記事では、管理された SQL Server をローカル認証から混合モードへ切り替え、Nerdio Manager の接続文字列を更新して、Nerdio Manager のサービスプリンシパル(Nerdio Manager が Azure と対話する際に使用する同じアプリケーションオブジェクト)を使用して認証する手順を説明します。
注:
Nerdio Manager が SQL 認証で使用するための別のアプリケーションを作成することは可能ですが、それはこの記事の範囲を超えています。詳細については、Nerdio Support (nfa.support@getnerdio.com) までお問い合わせください。
制限されたネットワークアクセスを持つ App Services は、Microsoft 認証 URL への接続性が必要です。詳細については VNet 統合ファイアウォール要件 を参照してください。
前提条件
RBAC と権限
Nerdio Manager が高度なインストール方法を使用してインストールされている場合、または制限された権限が適用されている場合、SQL Server に接続するために使用されるアカウントが、最低限 Contributor ロールを持っていることを確認してください。最小権限の原則 (PoLP) に従い、この手順が要求する以上の権限を持つアカウントを使用しないでください。
準備手順
この手順を実行する前に、Entra ID の Nerdio Manager エンタープライズアプリケーションから次の詳細をメモしてください。Entra ID ポータルで、エンタープライズアプリケーションに移動し、概要セクションで次の内容を記録します。
アプリ名: これは SQL データベースに db_owner として追加されます。
アプリ ID: これは更新された接続文字列内で必要です。
Entra ID 管理者を割り当て、SQL Server に接続してください。
Azure ポータルで、Nerdio Manager SQL Server に移動し、設定 > Microsoft Entra ID を選択します。SQL ServerでEntra ID管理者としてユーザーアカウントを割り当てます。
-
SQL Server Management Studioを使用して、ホストされたSQL Serverに接続し、Entra ID管理者アカウントでサインインします。
重要: 上記の前提条件に記載されているように、使用するアカウントが最低限、最小特権の Contributor ロールを持っていることを確認してください。
-
Nerdio Manager SQL データベースの必要な接続詳細を入力してください。
Nerdio Manager が展開した Azure SQL データベースに移動してください。
設定 > 概要 に移動し、サーバー名をコピーしてください。
SSMS で、サーバー名を サーバー名 フィールドに貼り付けてください。
認証では、ほとんどの環境で Microsoft Entra ID - Universal with MFA を選択してください。
-
ユーザー名フィールドには、ステップ1で SQL Server に割り当てられた Entra ID 管理者のアカウントを指定してください。
注意: もしまだ存在しない場合、SQL Server のネットワーキング ルールにクライアント IP アドレスを追加するように求められることがあります。これを確認するために、Azure ポータルで Nerdio Manager SQL Server に移動してください。詳細については、Azure SQL DatabaseおよびAzure Synapse IPファイアウォールルールを参照してください。
SSMS ツールバーで、クエリを実行する前にデータベースのドロップダウンが nmw-app-db を表示していることを確認してください。masterデータベースに対してクエリを実行すると、ロール 'db_owner' を変更できませんというエラーが発生します。
設定クエリを実行してください。
-
次のクエリを実行して、Nerdio Manager を db_owner として追加してください。nerdio-nmw-app をあなたのNerdioエンタープライズアプリ名に置き換え、角括弧を保持してください。これはエンタープライズアプリ名であり、アプリサービス名ではありません。
CREATE USER [nerdio-nmw-app] FROM EXTERNAL PROVIDER
ALTER ROLE db_owner ADD MEMBER [nerdio-nmw-app]; -
次のクエリを実行して、現在 db_owner ロールに割り当てられているすべてのユーザーを表示することで変更を検証してください。Nerdio Manager のアプリケーションが結果に表示されることを確認してください。
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 rolememINNER 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接続文字列を更新してください。
Azure ポータルで、Key Vaultに移動し、Nerdio Manager Key Vaultを選択してください。名前は nmw-app-kv-* のパターンに従います。
-
左のブレードで、オブジェクトの下にある シークレット を選択してください。
注意: まず、シークレットを読み取るおよび変更するためにアカウントのアクセスを有効にする必要があるかもしれません。Key Vault で 設定 > アクセス ポリシー に移動し、これを設定してください。
-
AzureAD-ClientSecret の値をコピーしてください。これは Nerdio Manager が認証に使用する現在のシークレットです。
注意: 代わりに、Entra ID ポータルで新しいシークレットを生成することもできます。新しいシークレットは、既存のシークレットと並行して追加されます。
-
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;
-
環境に特有の 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 の値に設定
-
Nerdio Manager Key Vault で、オブジェクト > シークレットに移動し、ConnectionStrings—DefaultConnectionを選択してください。既存のシークレットは直接置き換えることができないため、次のように新しいバージョンを作成します。
[+ 新しいバージョン] を選択します。
更新された接続文字列をシークレット値フィールドに入力してください。
他のすべてのパラメータは既定のままにし、作成を選択します。
App Service を再起動し、認証を完了してください。
Azure ポータルで、App Serviceに移動し、Nerdio Manager App Service を選択してください。
停止を選択し、その後開始を選択します。
-
Nerdio Manager がアクセス可能で正常に機能していることを確認した後、SQL 混合認証モードを無効にして、Entra ID 認証のみにアクセスを制限してください。
Azure ポータルで、Nerdio Manager SQL Server に移動してください。
設定 > Microsoft Entra IDに移動します。
認証を Entra ID のみに制限するオプションを選択してください。
注:
アクセスを確認する前に、再起動後、数分待ってください。接続文字列が無効であるか、権限が正しく設定されていない場合、Nerdio Manager は UI に読み込まれず、すぐにエラーを返します。
問題が発生した場合は、元の接続文字列を置き換え、App Service を再起動して機能を復元してください。
追加のリソース
Azure SQL で Microsoft Entra 認証を設定および管理する — Microsoft Learn
コメント (0件のコメント)