次の方法で共有


Azure Arc で有効になっている SQL Server のマネージド ID と Microsoft Entra 認証を設定する

適用対象: SQL Server 2025 (17.x)

この記事では、Azure Arc で有効になっている SQL Server の Microsoft Entra ID マネージド ID を設定および構成する手順について説明します。

SQL Server でのマネージド ID の概要については、 Azure Arc で有効になっている SQL Server のマネージド ID に関するページを参照してください。

[前提条件]

Azure Arc によって有効になっている SQL Server でマネージド ID を使用する前に、次の前提条件を満たしていることを確認してください。

プライマリ マネージド ID を有効にする

Azure Extension for SQL Server をサーバーにインストールした場合は、Azure portal から直接、SQL Server インスタンスのプライマリ マネージド ID を有効にすることができます。 レジストリを更新してプライマリ マネージド ID を手動で有効にすることもできますが、細心の注意を払って行う必要があります。

Azure portal でプライマリ マネージド ID を有効にするには、次の手順に従います。

  1. Azure portal で Azure Arc リソースによって有効になっている SQL Server に移動します。

  2. [ 設定] で Microsoft Entra ID と Purview を 選択し、 Microsoft Entra ID と Purview ページを 開きます。

    [Microsoft Entra ID 認証を有効にする] オプションが表示されない場合は、SQL Server インスタンスが Azure Arc に接続されていること、および最新の SQL 拡張機能がインストールされていることを確認します。

  3. [Microsoft Entra ID と Purview] ページで、[プライマリ マネージド ID を使用する] の横にあるチェック ボックスをオンにし、[保存] を使用して構成を適用します。

    Azure portal の Microsoft Entra オプションのスクリーンショット。

ID にアプリケーションのアクセス許可を付与する

Important

これらのアクセス許可を付与できるのは 、特権ロール管理者 以上のロールだけです。

Arc 対応マシン名を使用するシステム割り当てマネージド ID には、次の Microsoft Graph アプリケーションアクセス許可 (アプリ ロール) が必要です。

  • User.Read.All: Microsoft Entra のユーザー情報にアクセスできます。

  • GroupMember.Read.All: Microsoft Entra のグループ情報にアクセスできます。

  • Application.Read.ALL: Microsoft Entra サービス プリンシパル (アプリケーション) 情報にアクセスできます。

PowerShell を使用して、マネージド ID に必要なアクセス許可を付与できます。 または、 ロール割り当て可能なグループを作成することもできます。 グループが作成されたら、 ディレクトリ閲覧者 ロールまたは User.Read.AllGroupMember.Read.All、および Application.Read.All アクセス許可をグループに割り当て、Azure Arc 対応マシンのすべてのシステム割り当てマネージド ID をグループに追加します。 運用環境で ディレクトリ閲覧者 ロールを使用することはお勧めしません。

次の PowerShell スクリプトは、マネージド ID に必要なアクセス許可を付与します。 このスクリプトが PowerShell 7.5 以降のバージョンで実行され、 Microsoft.Graph モジュール 2.28 以降がインストールされていることを確認します。

# Set your Azure tenant and managed identity name
$tenantID = '<Enter-Your-Azure-Tenant-Id>'
$managedIdentityName = '<Enter-Your-Arc-HostMachine-Name>'

# Connect to Microsoft Graph
try {
    Connect-MgGraph -TenantId $tenantID -ErrorAction Stop
    Write-Output "Connected to Microsoft Graph successfully."
}
catch {
    Write-Error "Failed to connect to Microsoft Graph: $_"
    return
}

# Get Microsoft Graph service principal
$graphAppId = '00000003-0000-0000-c000-000000000000'
$graphSP = Get-MgServicePrincipal -Filter "appId eq '$graphAppId'"
if (-not $graphSP) {
    Write-Error "Microsoft Graph service principal not found."
    return
}

# Get the managed identity service principal
$managedIdentity = Get-MgServicePrincipal -Filter "displayName eq '$managedIdentityName'"
if (-not $managedIdentity) {
    Write-Error "Managed identity '$managedIdentityName' not found."
    return
}

# Define roles to assign
$requiredRoles = @(
    "User.Read.All",
    "GroupMember.Read.All",
    "Application.Read.All"
)

# Assign roles using scoped syntax
foreach ($roleValue in $requiredRoles) {
    $appRole = $graphSP.AppRoles | Where-Object {
        $_.Value -eq $roleValue -and $_.AllowedMemberTypes -contains "Application"
    }

    if ($appRole) {
        try {
            New-MgServicePrincipalAppRoleAssignment   -ServicePrincipalId $managedIdentity.Id `
                -PrincipalId $managedIdentity.Id `
                -ResourceId $graphSP.Id `
                -AppRoleId $appRole.Id `
                -ErrorAction Stop

            Write-Output "Successfully assigned role '$roleValue' to '$managedIdentityName'."
        }
        catch {
            Write-Warning "Failed to assign role '$roleValue': $_"
        }
    }
    else {
        Write-Warning "Role '$roleValue' not found in Microsoft Graph AppRoles."
    }
}

ログインとユーザーを作成する

Microsoft Entra チュートリアルの手順に従って、マネージド ID のログインとユーザーを作成します。