チュートリアル: SQL Server 用の Microsoft Entra 認証を設定する
適用対象: SQL Server 2022 (16.x)
この記事では、Microsoft Entra ID を使用した認証を設定する方法および、さまざまな Microsoft Entra 認証方法を使用する方法に関するプロセス手順を段階的に説明します。
Note
Microsoft Entra ID の、旧称は Azure Active Directory(Azure AD)です。
このチュートリアルでは、次の作業を行う方法について説明します。
- Microsoft Entra アプリケーションの登録と作成
- Microsoft Entra アプリケーションにアクセス許可を付与する
- 証明書を作成して割り当てる
- Azure portal を使用して SQL Server の Microsoft Entra 認証を構成する
- ログインとユーザーを作成する
- サポートされている認証方法を使用して接続する
前提条件
SQL Server 2022 (16.x) のインスタンスを持つオンプレミスの物理または仮想 Windows Server。
Azure VM 上の SQL Server の場合は、Azure VM 上の SQL Server 2022 の Microsoft Entra 認証を確認 してください。
Azure Arc によって有効になっているサーバーとインスタンス。詳細については、「SQL Server を Azure Arc に接続する」を参照してください。
Microsoft Entra ID へのアクセスは、認証目的で使用できます。 詳細については、「チュートリアル: SQL Server の Microsoft Entra 認証」を参照してください。
クライアント マシンに SQL Server Management Studio (SSMS) バージョン 18.0 以上がインストールされていること。 または、最新の Azure Data Studio をダウンロードします。
認証の前提条件
Note
SQL Server の Microsoft Entra 管理者を設定する際に Azure Key Vault 証明書と Microsoft Entra アプリケーションを自動的に作成できるように、Azure に拡張機能が実装されています。 詳細については、「チュートリアル: 自動化を使用して SQL Server の Microsoft Entra 管理者を設定する」を参照してください。
SQL Server 用の Microsoft Entra ID アプリケーションの登録。 SQL Server インスタンスを Microsoft Entra アプリケーションとして登録すると、インスタンスは Microsoft Entra ID をクエリできるようになり、Microsoft Entra アプリケーションは SQL Server インスタンスの代わりに認証を行うことができます。 アプリケーションの登録には、特定のクエリに対して SQL Server によって使用されるアクセス許可もいくつか必要です。
SQL Server では、この認証に証明書が使用され、証明書は Azure Key Vault (AKV) に格納されます。 Azure Arc エージェントでは、証明書が SQL Server インスタンス ホストにダウンロードされます。
警告
Microsoft Entra ID によって認証された接続は常に暗号化されます。 SQL Server で自己署名証明書を使用している場合は、接続文字列を trust server cert = true
を追加する必要があります。 SQL Server と Windows で認証された接続には暗号化は必要ありませんが、強くお勧めします。
Microsoft Entra アプリケーションの登録と作成
- Azure portal に移動し、[Microsoft Entra ID]>[アプリの登録]>[新規登録] の順に選択します。
- 名前を指定する - この記事の例では SQLServerCTP1 を使用しています。
- [サポートされているアカウントの種類] を選択し、[この組織のディレクトリ内のアカウントのみ] を使用します
- リダイレクト URI は設定しないでください
- [登録] を選択します
次のアプリケーションの登録を参照してください。
アプリケーションのアクセス許可を付与する
新しく作成したアプリケーションを選択し、左側のメニューで、[API のアクセス許可] を選択します。
[アクセス許可の追加] > [Microsoft Graph] > [アプリケーションのアクセス許可] の順に選択します
- [Directory.Read.All] をオンにします
- [アクセス許可の追加] を選択する
[アクセス許可の追加] > [Microsoft Graph] > [委任されたアクセス許可] の順に選択します
- [Application.Read.All] をオンにします
- [Directory.AccessAsUser.All] をオンにします
- [Group.Read.All] をオンにします
- [User.Read.All] をオンにします
- [アクセス許可の追加] を選択する
[管理者の同意の付与] を選択します
Note
上記のアクセス許可に管理者の同意を付与するには、Microsoft Entra アカウントにグローバル管理者または特権ロール管理者のロールが必要です。
証明書を作成して割り当てる
Azure portal に移動し、[キー コンテナー] を選択し、使用するキー コンテナーを選択するか、新しいキー コンテナーを作成します。 [証明書] > [生成/インポート] の順に選択します
[証明書の作成方法] で、[生成] を使用します。
証明書名とサブジェクトを追加します。
推奨される有効期間は最大 12 か月です。 残りの値は、既定値のままでかまいません。
[作成] を選択します
Note
証明書が作成された後、それが無効として表示される場合があります。 サイトを更新すると、証明書が有効として表示されます。
新しい証明書に移動し、証明書の最新バージョンの行を選択します。 [CER 形式でダウンロード] を選択して、証明書の公開キーを保存します。
Note
これは、SQL Server ホストではなく、 次の手順で Azure portal にアクセスするクライアントで行います。
Azure portal で、上記で作成したアプリの登録に移動し、[証明書] リストを選択する
- [証明書のアップロード] を選択します。
- 最後の手順でダウンロードした公開キー (.cer ファイル) を選択します。
- [追加] を選択します。
Azure portal で、証明書が格納されている Azure Key Vault インスタンスに移動し、ナビゲーション メニューから [アクセス ポリシー] を選択します
[作成] を選択します
[シークレットのアクセス許可] で、[取得] と [リスト] を選択します。
[認定資格証のアクセス許可] で、[取得]、[リスト] の順に選択します。
[次へ] を選択します。
[プリンシパル] ページで、マシンの名前を検索します。Azure Arc インスタンスは、SQL Server ホストのホスト名です。
[次へ] を 2 回選択するか、[確認と作成] を選択して、[アプリケーション (オプション)] ページをスキップします。
[プリンシパル] の "オブジェクト ID" が、インスタンスに割り当てられているマネージド ID の [プリンシパル ID] と一致していることを確認します。
確認するには、リソース ページに移動し、[概要] ページの [要点] ボックスの右上にある [JSON ビュー] を選択します。 ID の下に principalId があります
[作成] を選択します
アクセス許可が確実に適用されるように、必ず [作成] を選択してください。 アクセス許可が格納されたことを確認するには、ブラウザー ウィンドウを更新し、Azure Arc インスタンスの行がまだ残っていることを確認します。
Azure portal を使用して SQL Server の Microsoft Entra 認証を構成する
Note
Azure CLI、PowerShell、または ARM テンプレート を使用して、SQL Server 用の Microsoft Entra 管理者を設定できます。
Azure portal に移動し、SQL [Server - Azure Arc] を選択し、SQL Server ホストのインスタンスを選択します。
[プロパティ] メニューに移動して、[SQL Server - Azure Arc] リソースの状態を確認し、接続されているかどうかを確認します。 詳細については、「SQL Server - Azure Arc リソースを確認する」を参照してください。
リソース メニューの [設定] で、[Microsoft Entra ID と Purview] を選択します。
[管理者の設定] を選択して [Microsoft Entra ID] ペインを開き、 SQL Server の管理者ログインとして設定するアカウントを選択します。
[カスタマー マネージド証明書] と [証明書の選択] をオンにします。
[証明書の変更] を選択し、新しいペインで先ほど作成した AKV インスタントと証明書を選択します。
[カスタマー マネージド アプリ登録] をオンにします。
[アプリの登録の変更] を選択し、先ほど作成したアプリの登録を選択します。
[保存] を選択します。 これにより、Arc サーバー エージェントに要求が送信され、その SQL Server インスタンスの Microsoft Entra 認証が構成されます。
証明書をダウンロードして設定を構成するには、数分かかります。 Azure portal ですべてのパラメーターを設定し、[保存] を選択した後、メッセージ "
SQL Server's Azure Arc agent is currently processing a request. Values below may be incorrect. Please wait until the agent is done before continuing
" が表示される場合があります。 保存処理がSaved successfully
で完了するまで待ってから Microsoft Entra のログインを試みます。Azure Arc サーバー エージェントは、前のアクションが完了した後にのみ更新することができます。 つまり、最後の構成が完了する前に新しい Microsoft Entra 構成を保存すると、失敗する可能性があります。 [保存] を選択したときに、メッセージ "拡張呼び出しが失敗しました" が表示された場合は、5 分待ってから、再度試してみてください。
Note
Microsoft Entra 管理者ログインに
sysadmin
ロールが付与されると、Azure portal で Microsoft Entra 管理者を変更しても、sysadmin
として残っている以前の ログインは削除されません。 ログインを削除するには、手動で削除する必要があります。SQL Server インスタンスの Microsoft Entra 管理者の変更は、SQL Server の Azure Arc エージェントでプロセスが完了すると、サーバーの再起動なしで行われます。
sys.server_principals
で新しい管理者を表示するには、SQL Server インスタンスを再起動する必要があります。それまでは、古い管理者が表示されます。 現在の Microsoft Entra 管理者は、Azure portal で確認できます。
ログインとユーザーを作成する
SQL Server ホスト上の Azure Arc エージェントによって操作が完了すると、ポータルの [Microsoft Entra ID] メニューで選択された管理者アカウントは、SQL Server インスタンス上の sysadmin
になります。 SSMS や Azure Data Studio などのクライアントを使用して、サーバーに対する sysadmin
アクセス許可を持つ Microsoft Entra 管理者アカウントで SQL Server にサインインします。
Note
Microsoft Entra 認証を使用して行われる SQL Server へのすべての接続には、暗号化された接続が必要です。 データベース管理者 (DBA) がサーバーに対して信頼された SSL/TLS 証明書を設定していない場合、ログインは、メッセージ "この証明書チェーンは、信頼されていない機関によって発行されました" で失敗する可能性があります。これを修正するには、クライアントによって信頼されている SSL/TLS 証明書を使用するように SQL Server インスタンスを構成するか、接続の詳細プロパティで [サーバー証明書を信頼する] を選択します。 詳細については、「データベース エンジンへの暗号化接続の有効化」を参照してください。
ログイン構文を作成する
Azure SQL Database および Azure SQL Managed Instance で Microsoft Entra のログインとユーザーの作成用と同じ構文を SQL Server で使用できるようになりました。
Note
SQL Server では、ALTER ANY LOGIN
または ALTER ANY USER
アクセス許可を持つすべてのアカウントで、それぞれ Microsoft Entra ログインまたはユーザーを作成できます。 アカウントが Microsoft Entra ログインである必要はありません。
Microsoft Entra アカウントのログインを作成するには、master
データベースで次の T-SQL コマンドを実行します。
CREATE LOGIN [principal_name] FROM EXTERNAL PROVIDER;
ユーザーの場合、プリンシパル名を user@tenant.com
形式である必要があります。 Microsoft Entra ID では、これはユーザー プリンシパル名です。 Microsoft Entra グループやアプリケーションなど、他のすべての種類のアカウントでは、プリンシパル名は Microsoft Entra オブジェクト名です。
次に例をいくつか示します。
-- login creation for Microsoft Entra user
CREATE LOGIN [user@contoso.com] FROM EXTERNAL PROVIDER;
GO
-- login creation for Microsoft Entra group
CREATE LOGIN [my_group_name] FROM EXTERNAL PROVIDER;
GO
-- login creation for Microsoft Entra application
CREATE LOGIN [my_app_name] FROM EXTERNAL PROVIDER;
GO
master
データベース内の Microsoft Entra ログインを一覧表示するには、次の T-SQL コマンドを実行します。
SELECT * FROM sys.server_principals
WHERE type IN ('E', 'X');
sysadmin
ロール (たとえば、admin@contoso.com
) に Microsoft Entra ユーザー メンバーシップを付与するには、master
で次のコマンドを実行します。
CREATE LOGIN [admin@contoso.com] FROM EXTERNAL PROVIDER;
GO
ALTER SERVER ROLE sysadmin ADD MEMBER [admin@contoso.com];
GO
sp_addsrvrolemember
ストアド プロシージャは、SQL Server の sysadmin
サーバー ロールのメンバーとして実行する必要があります。
ユーザー構文を作成する
Microsoft Entra ID から、サーバー プリンシパルに関連付けられているデータベース ユーザー (ログイン) として、または包含データベース ユーザーとしてデータベース ユーザーを作成できます。
Microsoft Entra ログインから Microsoft Entra ユーザーを作成するには、次の構文を使用します。
CREATE USER [principal_name] FROM LOGIN [principal_name];
principal_name
構文は、ログインの場合と同じです。
次に例をいくつか示します。
-- for Azure AD user
CREATE USER [user@contoso.com] FROM LOGIN [user@contoso.com];
GO
-- for Azure AD group
CREATE USER [my_group_name] FROM LOGIN [my_group_name];
GO
-- for Azure AD application
CREATE USER [my_app_name] FROM LOGIN [my_app_name];
GO
Microsoft Entra 包含データベース ユーザー (サーバー ログインに関連付けられていないユーザー) を作成するには、次の構文を実行します。
CREATE USER [principal name] FROM EXTERNAL PROVIDER;
グループまたはアプリケーションから Microsoft Entra データベース ユーザーを作成する際は、Microsoft Entra のグループ名または Microsoft Entra のアプリケーション名を <principal name>
として使用します。
次に例をいくつか示します。
-- for Azure AD contained user
CREATE USER [user@contoso.com] FROM EXTERNAL PROVIDER;
GO
-- for Azure AD contained group
CREATE USER [my_group_name] FROM EXTERNAL PROVIDER;
GO
--for Azure AD contained application
CREATE USER [my_group_name] FROM EXTERNAL PROVIDER;
GO
データベース内に作成されたユーザーを一覧表示するには、次の T-SQL コマンドを実行します。
SELECT * FROM sys.database_principals;
新しいデータベース ユーザーには、既定で Connect アクセス許可が付与されます。 他のすべての SQL Server 権限は、承認された付与者によって明示的に付与される必要があります。
Microsoft Entra ゲスト アカウント
CREATE LOGIN
および CREATE USER
構文は、ゲスト ユーザーもサポートします。 たとえば、testuser@outlook.com
が contoso.com
テナントに招待された場合、その他の Microsoft Entra ユーザーまたはログインを作成するときと同じ構文で SQL Server にログインとして追加できます。 ゲスト ユーザーとログインを作成するとき、テナント内のユーザー プリンシパル名ではなく、ゲスト アカウントの送信元メール アドレスを使用します。 この例では、アカウントが contoso.com
テナントに登録されていても、outlook.com
が提供されます。
既存のログインからゲスト ユーザーを作成する
CREATE USER [testuser@outlook.com] FROM LOGIN [testuser@outlook.com];
ゲスト ユーザーを包含ユーザーとして作成する
CREATE USER [testuser@outlook.com] FROM EXTERNAL PROVIDER;
サポートされている認証方法を使用して接続する
SQL Server では、複数の Microsoft Entra 認証方法がサポートされています。
- 既定値
- ユーザー名とパスワード
- 統合
- 多要素認証を使用した Universal
- サービス プリンシパル
- マネージド ID
- アクセス トークン
これらの方法のいずれかを使用して SQL Server インスタンスに接続します。 詳細については、「チュートリアル: SQL Server の Microsoft Entra 認証」を参照してください。
SSMS を使用した認証の例
Note
Microsoft Entra ID はAzure Active Directory (Azure AD) の新しい名前ですが、既存の環境の中断を防ぐために、UI フィールド、接続プロバイダー、エラー コード、コマンドレットなど、ハードコーディングされた一部の要素でAzure AD が残ります。 この記事では、2 つの名前は交換可能です。
以下は、認証方法 Azure Active Directory - MFA で凡用 を使用した SQL Server Management Studio (SSMS) 接続ページのスナップショットです。
認証プロセス中に、ユーザーが作成されたデータベースを SSMS で明示的に指示する必要があります。 [オプション]> [接続プロパティ] > [データベースへの接続: database_name
] を展開します。
詳細については、「Microsoft Entra の多要素認証の使用」を参照してください。
Azure SQL の Microsoft Entra 認証をサポートする SQL Server ツールは、SQL Server 2022 (16.x) でもサポートされています。
Microsoft Entra ID パラメーターが格納されている場所
警告
Microsoft Entra ID のパラメーターは Azure Arc エージェントによって構成されるので、手動で再構成する必要はありません。
Linux では、Microsoft Entra ID パラメーターは mssql-conf
に格納されます。 Linux での構成オプションの詳細については、「mssql-conf ツールを使用して Linux で SQL Server を構成する」を参照してください。
既知の問題
- 以下の証明書の更新が反映されていません。
Microsoft Entra 認証を SQL Server 用に構成すると、SQL Server - Azure Arc リソースの [Microsoft Entra ID と Purview] ウィンドウで証明書を更新しても、完全に反映されない場合があります。 これにより、保存は成功しますが、古い値が表示されたままです。 証明書を更新するには、次の手順を行います。
- [管理者の削除] を選択します。
- [保存] を選択します。
- [管理者の設定] を選択し、新しい証明書を使用して Microsoft Entra 認証を再構成します。
- [保存] を選択します。