Azure Marketplace からの Nerdio Manager
セキュリティポリシーが SQL Server での Entra ID 認証を要求する場合、ユーザーのアイデンティティはローカル SQL Server ユーザーセットではなく、Entra ID によって中央管理されます。この記事では、管理された SQL Server をローカル認証から混合モードに変換し、 のサービスプリンシパルを使用して認証するように Nerdio Manager
注記
-
Nerdio Manager
-
制限されたネットワークアクセスを持つ App Services は、Microsoft 認証 URL への接続性が必要です。詳細については、VNet 統合ファイアウォール要件を参照してください。
-
Azure ポータルで、 Nerdio Manager > Microsoft Entra ID を選択します。SQL ServerでEntra ID管理者としてユーザーアカウントを割り当てます。
-
SQL Server Management Studioを使用して、ホストされたSQL Serverに接続し、Entra ID管理者アカウントでサインインします。
警告
上記の前提条件に記載されているように、使用するアカウントには、最低限、最小特権 Contributor ロールが必要です。
-
Nerdio Manager
-
Nerdio Manager
-
設定 > 概要 に移動し、サーバー名をコピーしてください。
-
SSMS で、サーバー名を サーバー名 フィールドに貼り付けてください。
-
認証では、ほとんどの環境で Microsoft Entra ID - Universal with MFA を選択してください。
-
ユーザー名フィールドには、ステップ1で SQL Server に割り当てられた Entra ID 管理者のアカウントを指定してください。
注記
クライアントIPアドレスがSQL Serverのネットワーキングルールに存在しない場合、追加するように求められることがあります。Azureポータルで Nerdio Manager
-
-
SSMS ツールバーで、クエリを実行する前にデータベースのドロップダウンが nmw-app-db を表示していることを確認してください。masterデータベースに対してクエリを実行すると、ロール 'db_owner' を変更できませんというエラーが発生します。
-
次のクエリを実行して、Nerdio Managerとして追加します。nerdio-nmw-app をあなたのNerdioエンタープライズアプリ名に置き換え、角括弧を保持してください。これはエンタープライズアプリ名であり、アプリサービス名ではありません。
CREATE USER [nerdio-nmw-app] FROM EXTERNAL PROVIDER ALTER ROLE db_owner ADD MEMBER [nerdio-nmw-app]; -
次のクエリを実行して、現在 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
-
Azure ポータルで、Key Vaultに移動し、 Key Vaultを選択します。名前は nmw-app-kv-* のパターンに従います。
-
左のブレードで、オブジェクトの下にある シークレット を選択してください。
注記
シークレットの読み取りと変更を行う前に、アカウントのアクセスを有効にする必要がある場合があります。Key Vault で 設定 > アクセス ポリシー に移動し、これを設定してください。
-
AzureAD-ClientSecret の値をコピーしてください。これは、現在 が認証に使用しているシークレットです。
注記
また、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 > シークレットに移動し、ConnectionStrings—DefaultConnectionを選択します。既存のシークレットは直接置き換えることができないため、次のように新しいバージョンを作成します。
-
[+ 新しいバージョン] を選択します。
-
更新された接続文字列をシークレット値フィールドに入力してください。
-
他のすべてのパラメータは既定のままにし、作成を選択します。
-
-
Azureポータルで、アプリサービスに移動し、アプリサービスを選択します。
-
停止を選択し、その後開始を選択します。
-
Nerdio Manager
-
Azureポータルで、 Nerdio Manager
-
設定 > Microsoft Entra IDに移動します。
-
認証を Entra ID のみに制限するオプションを選択してください。
注記
-
アクセス確認の前に、再起動後数分お待ちください。接続文字列が無効もしくは権限が正しく設定されていない場合、 Nerdio Manager
-
問題が発生した場合は、元の接続文字列を置き換え、App Service を再起動して機能を復元してください。
-
-
Azure SQL で Microsoft Entra 認証を設定および管理する — Microsoft Learn
-
VNet インテグレーション ファイアウォールの要件 VNet 統合ファイアウォール要件
コメント (0件のコメント)