英語で読む

次の方法で共有


チュートリアル: 自動化を使って SQL Server 用の Microsoft Entra 管理者を設定する

適用対象: SQL Server 2022 (16.x)

注意

この機能は SQL Server 2022 (16.x) 以降のバージョンで利用でき、オンプレミスの SQL Server、Windows および Linux ホスト、および Windows Azure VM 上の SQL Server 2022 でのみサポートされます。

この記事では、Azure portal を使用して SQL Server の Microsoft Entra ID (旧称 Azure Active Directory) で認証を許可するように Microsoft Entra 管理者を設定する方法と、次のような API を設定する方法について説明します。

  • PowerShell
  • Azure CLI
  • ARM テンプレート

また、更新された機能を調べて、Azure portal で SQL Server 用の Microsoft Entra 管理者を設定します。これにより、証明書の作成とアプリケーションの登録が自動化されます。 以前は、SQL Server 用の Microsoft Entra 認証を設定するには、Azure 証明書とアプリケーションの登録を使用して Microsoft Entra 管理者を手動で設定する必要がありました

注意

Microsoft Entra ID はAzure Active Directory (Azure AD) の新しい名前ですが、既存の環境の中断を防ぐために、UI フィールド、接続プロバイダー、エラー コード、コマンドレットなど、ハードコーディングされた一部の要素でAzure AD が残ります。 この記事では、2 つの名前は交換可能です。

前提条件

  • SQL Server 2022 (16.x) 以降がインストールされている。
  • SQL Server が Azure クラウドに接続されていること。 詳細については、「SQL Server を Azure Arc に接続する」を参照してください。
  • Microsoft Entra ID は、Azure Arc インスタンスと同じテナントでの認証用に構成されています。
  • Azure Key Vault が必須です。

Microsoft Entra 管理者を設定する前の準備

SQL Server - Azure Arc リソースとキー コンテナーリソースで Microsoft Entra 管理者を設定するには、次のアクセス許可が必要です。

Azure Arc のアクセス許可を構成する

ガイドに従って、SQL Server が Azure Arc に接続されていることを確認します。SQL Server - Azure Arc リソースの Microsoft Entra 管理者を設定するユーザーには、サーバーでの投稿者ロールが必要です。

  1. Azure portal に移動します
  2. [SQL Server - Azure Arc] を選択し、SQL Server ホストのインスタンスを選択します。
  3. [アクセス制御 (IAM)] を選択します。
  4. [追加]>[ロールの割り当ての追加] を選択して、Microsoft Entra 管理者を設定しているユーザーに投稿者ロールを追加します。

Azure Key Vault のアクセス許可を構成する

Azure Key Vault をまだ作成していない場合は、作成します。 Microsoft Entra 管理者を設定するユーザーには、Azure Key Vault での投稿者ロールが必要です。 Azure Key Vault のユーザーにロールを追加するには:

  1. Azure portal に移動します
  2. [キー コンテナー] リソースに移動します。
  3. [アクセス制御 (IAM)] を選びます。
  4. [追加]>[ロールの割り当ての追加] を選択して、Microsoft Entra 管理者を設定しているユーザーに投稿者ロールを追加します。

SQL Server ホストのアクセス ポリシーを設定する

  1. Azure portal で、Azure Key Vault インスタンスに移動し、[アクセス ポリシー] を選択します。

  2. [アクセス ポリシーの追加] を選択します。

  3. [キーのアクセス許可] で、[署名] を使用します。

  4. [シークレットのアクセス許可] で、[取得][リスト] を選択します。

  5. [認定資格証のアクセス許可] で、[取得][リスト] の順に選択します。

  6. [次へ] を選択します。

  7. [プリンシパル] ページで、マシンの名前を検索します。Azure Arc インスタンスは、SQL Server ホストのホスト名です。

    Portal の Azure Arc サーバー リソースのスクリーンショット。

  8. [次へ] を 2 回選択するか、[確認と作成] を選択して、[アプリケーション (オプション)] ページをスキップします。

    アクセス ポリシーを確認して作成する Azure portal のスクリーンショット。

    [プリンシパル] の "オブジェクト ID" が、インスタンスに割り当てられているマネージド ID の [プリンシパル ID] と一致していることを確認します。

    マシン定義の JSON ビューの Portal コントロールのスクリーンショット。

    確認するには、リソース ページに移動し、[概要] ページの [要点] ボックスの右上にある [JSON ビュー] を選択します。 ID の下に principalId があります。

  9. [作成] を選択します

アクセス許可が確実に適用されるように、必ず [作成] を選択してください。 アクセス許可が格納されたことを確認するには、ブラウザー ウィンドウを更新し、Azure Arc インスタンスの行がまだ残っていることを確認します。

Microsoft Entra ユーザーのアクセス ポリシーを設定する

  1. Azure portal で、Azure Key Vault インスタンスに移動し、[アクセス ポリシー] を選択します。
  2. [アクセス ポリシーの追加] を選択します。
  3. [キーのアクセス許可] で、[取得][リスト][作成] の順に選択します。
  4. [シークレットのアクセス許可] には、[取得][リスト]、および [設定] を選択します。
  5. [証明書のアクセス許可] には、[取得][リスト]、および [作成] を選択します。
  6. [プリンシパルの選択] で、SQL Server への接続に使用する Microsoft Entra ユーザーを追加します。
  7. [追加][保存] の順に選択します。

SQL Server 用の Microsoft Entra 管理者の設定

新しい API とポータル機能を使用すると、ユーザーは Azure 証明書と Microsoft Entra アプリケーションを個別に作成しなくても、SQL Server 用の Microsoft Entra 管理者を設定できます。 タブを選択すると、証明書とアプリケーションの自動作成を使用して Azure Arc に接続されている SQL Server の Microsoft Entra 管理者を設定する方法が表示されます。

注意

ARM テンプレートでは、Microsoft Entra 管理者を設定する前に、Azure Key Vault 証明書と Microsoft Entra アプリケーションを作成する必要があります。このプロセスの詳細については、「チュートリアル: SQL Server の Microsoft Entra 認証を設定する」を参照してください。

次の ARM テンプレートでは、既存の Azure Key Vault 証明書と Microsoft Entra アプリケーションを使用して Microsoft Entra 管理者を設定できます。

ARM テンプレートには、次の入力パラメーターが使用されます。

  • <machineName> - SQL Server ホストのマシン名
  • <Location> - SQL Server - Azure Arc リソース グループ (例: West US または Central US など)
  • <tenantId> - このテナント ID を確認するには、Azure portal から Microsoft Entra ID リソースにアクセスします。 [概要] ペインに [テナント ID] が表示されます
  • <instanceName> - SQL Server インスタンス名。 SQL Server のデフォルトのインスタンス名は MSSQLSERVER です。
  • <certSubjectName> - 作成した証明書名
  • <subscriptionId> - サブスクリプション ID。 サブスクリプション ID は Azure portal で確認できます
  • <resourceGroupName> - キー コンテナーを含むリソース グループ名。 完全な azureKeyVaultResourceUID 値は、キー コンテナー リソースに移動し、[プロパティ] を選択してリソース ID をコピーすることで確認できます。
  • <keyVaultName> - キー コンテナー名
  • <certIdentifier> - Azure Key Vault 証明書の証明書識別子証明書識別子を取得するには、キー コンテナー リソースに移動し、[設定][証明書] を選択します。 作成した証明書の現在のバージョンを選択し、証明書識別子の値をコピーします。 詳細については、「証明書をキー コンテナーに追加する」を参照してください。
  • <certSecret> - 証明書のシークレット識別子は、証明書識別子と同じメニューにあります
  • <applicationName> - 作成した Microsoft Entra アプリケーションの名前
  • <appID> - Microsoft Entra アプリケーションのアプリケーション (クライアント) ID は、アプリケーションの [概要] メニューで確認できます
  • <adminAccountName> - SQL Server に設定する Microsoft Entra 管理者アカウント
  • <adminID> - Microsoft Entra ユーザーまたはグループのオブジェクト ID、または別のアプリケーションを Microsoft Entra 管理者アカウントとして使用している場合はアプリケーションのアプリケーション (クライアント) ID。 詳細については、「チュートリアル: Microsoft Entra アプリケーションを使用した Microsoft Entra ユーザーの作成」を参照してください。
  • <adminType> - Microsoft Entra ユーザーおよびアプリケーションには 0、Microsoft Entra グループには 1 を使用します

Azure portal のカスタム デプロイを使用し、エディターで独自のテンプレートを作成します。 次に、例に貼り付けたら、構成を保存します。

注意

Linux ホスト マシン上の SQL Server の場合は、スクリプト内の WindowsAgent.SqlServerLinuxAgent.SqlServer に置き換えます。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {},
  "resources": [
    {
      "type": "Microsoft.HybridCompute/machines/extensions",
      "apiVersion": "2022-03-10",
      "name": "<machineName>/WindowsAgent.SqlServer",
      "location": "<Location>",
      "properties": {
        "publisher": "Microsoft.AzureData",
        "type": "WindowsAgent.SqlServer",
        "settings": {
          "AzureAD": [
            {
              "tenantId": "<tenantId>", 
              "instanceName": "<instanceName>",             
              "managedCertSetting": "CUSTOMER MANAGED CERT",
              "aadCertSubjectName": "<certSubjectName>",
              "azureKeyVaultResourceUID": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.KeyVault/vaults/<keyVaultName>",
              "azureCertUri": "<certIdentifier>",
              "azureCertSecretId": "<certSecret>",
              "managedAppSetting": "CUSTOMER MANAGED APP",
              "appRegistrationName": "<applicationName>",
              "appRegistrationSid": "<appID>",
              "adminLoginName": "<adminAccountName>",
              "adminLoginSid" : "<adminID>",
              "adminLoginType": 0
            }
          ]
        }
      }
    }
  ]
}

Microsoft Entra 管理者が設定されると、Microsoft Entra 管理者の資格情報を使用して SQL Server に接続できます。 ただし、新しい Microsoft Entra ログインとユーザーの作成に関連するその他のデータベース アクティビティは、管理者の同意が Microsoft Entra アプリケーションに付与されるまで失敗します。

注意

アプリケーションに対して管理者の同意を付与するには、同意を付与するアカウントに Microsoft Entra グローバル管理者または特権ロール管理者のロールが必要です。 これらのロールは、アプリケーションの管理者の同意を付与するために必要ですが、Microsoft Entra 管理者を設定する必要はありません。

  1. Azure portal で、[Microsoft Entra ID]>[アプリの登録] を選択し、新しく作成したアプリケーションを選択します。 アプリケーションには <hostname>-<instanceName><uniqueNumber> のような名前が必要です。

  2. [API のアクセス許可] メニューを選択します。

  3. [管理者の同意の付与] を選択します。

    Azure portal でのアプリケーションのアクセス許可のスクリーンショット。

アプリケーションに管理者の同意を付与しない場合、SQL Server で Microsoft Entra ログインまたはユーザーを作成すると、次のエラーが発生します。

Msg 37455, Level 16, State 1, Line 2
Server identity does not have permissions to access MS Graph.

Microsoft Entra 認証を使用して SQL Server に接続する

Azure Arc に接続されている SQL Server に対して Microsoft Entra 認証が設定されました。Microsoft Entra 認証を使用して SQL Server に接続するには、記事「チュートリアル: SQL Server の Microsoft Entra 認証を設定する」の Microsoft Entra 管理者を設定した後のセクションに従ってください。

関連項目