Azure SQL での Azure AD 認証を構成して管理するConfigure and manage Azure AD authentication with Azure SQL

適用対象: Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics (SQL DW)

この記事では、Azure Active Directory (Azure AD) インスタンスを作成して設定した後、Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (以前の SQL Data Warehouse) で Azure AD を使用する方法を示します。This article shows you how to create and populate an Azure Active Directory (Azure AD) instance, and then use Azure AD with Azure SQL Database, Azure SQL Managed Instance, and Azure Synapse Analytics (formerly SQL Data Warehouse). 概要については、「Azure Active Directory 認証」を参照してください。For an overview, see Azure Active Directory authentication.

Azure AD の認証方法Azure AD authentication methods

Azure AD 認証では、次の認証方法がサポートされます。Azure AD authentication supports the following authentication methods:

  • Azure AD クラウド専用 IDAzure AD cloud-only identities
  • サポートされる Azure AD ハイブリッド ID:Azure AD hybrid identities that support:
    • シームレス シングル サインオン (SSO) と組み合わせた 2 つのオプションによるクラウド認証Cloud authentication with two options coupled with seamless single sign-on (SSO)
      • Azure AD パスワード ハッシュ認証Azure AD password hash authentication
      • Azure AD パススルー認証Azure AD pass-through authentication
    • フェデレーション認証Federated authentication

Azure AD 認証の方法の詳細については、「Azure Active Directory ハイブリッド ID ソリューションの適切な認証方法を選択する」を参照してください。For more information on Azure AD authentication methods, and which one to choose, see Choose the right authentication method for your Azure Active Directory hybrid identity solution.

Azure AD ハイブリッド ID、セットアップ、および同期に関する詳細については、次の記事を参照してください。For more information on Azure AD hybrid identities, setup, and synchronization, see:

Azure AD インスタンスを作成して設定するCreate and populate an Azure AD instance

Azure AD インスタンスを作成し、ユーザーとグループを設定します。Create an Azure AD instance and populate it with users and groups. Azure AD は初期の Azure AD のマネージド ドメインにすることができます。Azure AD can be the initial Azure AD managed domain. また、Azure AD とフェデレーションされるオンプレミスの Active Directory Domain Services にすることもできます。Azure AD can also be an on-premises Active Directory Domain Services that is federated with the Azure AD.

詳細については、「オンプレミス ID と Azure Active Directory の統合」、Azure AD への独自のドメイン名の追加に関するページ、「Microsoft Azure now supports federation with Windows Server Active Directory」(Microsoft Azure が Windows Server Active Directory とのフェデレーションに対応)、「Azure AD ディレクトリの管理」、Windows PowerShell を使用した Azure AD の管理に関するページ、および「Hybrid Identity Required Ports and Protocols」(ハイブリッド ID の必須ポートとプロトコル) を参照してください。For more information, see Integrating your on-premises identities with Azure Active Directory, Add your own domain name to Azure AD, Microsoft Azure now supports federation with Windows Server Active Directory, Administering your Azure AD directory, Manage Azure AD using Windows PowerShell, and Hybrid Identity Required Ports and Protocols.

Azure サブスクリプションの Azure Active Directory への関連付けまたは追加Associate or add an Azure subscription to Azure Active Directory

  1. Azure サブスクリプションを Azure Active Directory に関連付けるには、ディレクトリを、データベースをホストする Azure サブスクリプションの信頼できるディレクトリにします。Associate your Azure subscription to Azure Active Directory by making the directory a trusted directory for the Azure subscription hosting the database. 詳細については、「Azure サブスクリプションを Azure Active Directory テナントに関連付けるまたは追加する」を参照してください。For details, see Associate or add an Azure subscription to your Azure Active Directory tenant.

  2. Azure Portal のディレクトリ スイッチャーを使用して、ドメインに関連付けられたサブスクリプションに切り替えます。Use the directory switcher in the Azure portal to switch to the subscription associated with domain.

    重要

    すべての Azure サブスクリプションには、Azure AD インスタンスとの間に信頼関係があります。Every Azure subscription has a trust relationship with an Azure AD instance. つまり、ディレクトリを信頼してユーザー、サービス、デバイスを認証します。This means that it trusts that directory to authenticate users, services, and devices. 複数のサブスクリプションが同じディレクトリを信頼できますが、1 つのサブスクリプションは 1 つのディレクトリだけを信頼します。Multiple subscriptions can trust the same directory, but a subscription trusts only one directory. このサブスクリプションとディレクトリの間の信頼関係は、サブスクリプションと Azure 内の他のすべてのリソース (Web サイト、データベースなど) の間の関係と異なります。後者は、サブスクリプションの子リソースにより近いものです。This trust relationship that a subscription has with a directory is unlike the relationship that a subscription has with all other resources in Azure (websites, databases, and so on), which are more like child resources of a subscription. サブスクリプションの有効期限が切れた場合、サブスクリプションに関連付けられたこれらの他のリソースへのアクセスも停止します。If a subscription expires, then access to those other resources associated with the subscription also stops. 一方、ディレクトリは Azure 内に残っており、別のサブスクリプションをそのディレクトリと関連付けて、ディレクトリ ユーザーの管理を継続できます。But the directory remains in Azure, and you can associate another subscription with that directory and continue to manage the directory users. リソースの詳細については、Azure でのリソース アクセスの説明に関するページを参照してください。For more information about resources, see Understanding resource access in Azure. この信頼関係について詳しくは、「Azure サブスクリプションを Azure Active Directory に関連付けるまたは追加する方法」をご覧ください。To learn more about this trusted relationship see How to associate or add an Azure subscription to Azure Active Directory.

SQL Database でのサーバーの Azure AD 管理者Azure AD admin with a server in SQL Database

Azure 内の (SQL Database または Azure Synapse をホストする) 各サーバーは、サーバー全体の管理者である単一のサーバー管理者アカウントを使用して開始されます。Each server in Azure (which hosts SQL Database or Azure Synapse) starts with a single server administrator account that is the administrator of the entire server. 2 番目の管理者アカウントを Azure AD アカウントとして作成します。Create a second administrator account as an Azure AD account. このプリンシパルは、サーバーの master データベースの包含データベース ユーザーとして作成されます。This principal is created as a contained database user in the master database of the server. 管理者アカウントは、すべてのユーザー データベースの db_owner ロールのメンバーであり、 dbo ユーザーとして各ユーザー データベースに入ります。Administrator accounts are members of the db_owner role in every user database, and enter each user database as the dbo user. 管理者アカウントの詳細については、「データベースとログインの管理」を参照してください。For more information about administrator accounts, see Managing Databases and Logins.

geo レプリケーションで Azure Active Directory を使用する場合は、プライマリ サーバーとセカンダリ サーバーの両方で Azure Active Directory 管理者を構成する必要があります。When using Azure Active Directory with geo-replication, the Azure Active Directory administrator must be configured for both the primary and the secondary servers. サーバーに Azure Active Directory 管理者がいない場合、Azure Active Directory へのログイン時に、"Cannot connect" サーバー エラーが発生します。If a server does not have an Azure Active Directory administrator, then Azure Active Directory logins and users receive a Cannot connect to server error.

注意

Azure AD アカウント (サーバー管理者アカウントを含みます) に基づいていないユーザーは、Azure AD に基づくユーザーを作成できません。これは、Azure AD で提示されるデータベース ユーザーを検証するアクセス許可がないためです。Users that are not based on an Azure AD account (including the server administrator account) cannot create Azure AD-based users, because they do not have permission to validate proposed database users with the Azure AD.

Azure AD 管理者 (SQL Managed Instance) をプロビジョニングするProvision Azure AD admin (SQL Managed Instance)

重要

次の手順は、Azure SQL Managed Instance をプロビジョニングする場合にのみに実行します。Only follow these steps if you are provisioning an Azure SQL Managed Instance. この操作は、Azure AD 内のグローバル/会社の管理者か、特権ロール管理者だけが実行できます。This operation can only be executed by Global/Company administrator or a Privileged Role Administrator in Azure AD.

パブリック プレビュー では、Azure AD 内のグループに ディレクトリ閲覧者 ロールを割り当てることができます。In public preview , you can assign the Directory Readers role to a group in Azure AD. その後、グループの所有者が、このグループのメンバーとしてマネージ インスタンス ID を追加すると、その SQL Managed Instance に Azure AD 管理者をプロビジョニングできるようになります。The group owners can then add the managed instance identity as a member of this group, which would allow you to provision an Azure AD admin for the SQL Managed Instance. この機能の詳細については、「Azure SQL の Azure Active Directory のディレクトリ閲覧者ロール」を参照してください。For more information on this feature, see Directory Readers role in Azure Active Directory for Azure SQL.

セキュリティ グループ メンバーシップを通じたユーザーの認証や、新しいユーザーの作成などといったタスクを正常に実行するには、SQL Managed Instance に Azure AD の読み取りアクセス許可が必要です。Your SQL Managed Instance needs permissions to read Azure AD to successfully accomplish tasks such as authentication of users through security group membership or creation of new users. そのためには、SQL Managed Instance に Azure AD の読み取りアクセス許可を付与する必要があります。For this to work, you need to grant the SQL Managed Instance permission to read Azure AD. この操作は、Azure portal または PowerShell から実行できます。You can do this using the Azure portal or PowerShell.

Azure portalAzure portal

Azure portal を使用して SQL Managed Instance に Azure AD の読み取りアクセス許可を付与するには、Azure AD で全体管理者または社内管理者としてログインし、次の手順のようにします。To grant your SQL Managed Instance Azure AD read permission using the Azure portal, log in as Global/Company administrator in Azure AD and follow these steps:

  1. Azure portal の右上隅にある使用可能な Active Directory のドロップダウン リストから、お使いの接続を選択します。In the Azure portal, in the upper-right corner, select your connection from a drop-down list of possible Active Directories.

  2. 既定の Azure AD として適切な Active Directory を選択します。Choose the correct Active Directory as the default Azure AD.

    このステップでは、Active Directory に関連付けられたサブスクリプションを SQL Managed Instance とリンクすることで、Azure AD インスタンスと SQL Managed Instance の両方に同じサブスクリプションが使用されるようにします。This step links the subscription associated with Active Directory to the SQL Managed Instance, making sure that the same subscription is used for both the Azure AD instance and the SQL Managed Instance.

  3. Azure AD の統合に使用する SQL Managed Instance に移動します。Navigate to the SQL Managed Instance you want to use for Azure AD integration.

    選択された SQL マネージド インスタンスの [Active Directory 管理者] ページを開いている Azure portal のスクリーンショット。

  4. Active Directory 管理者ページの上部でバナーを選択し、現在のユーザーにアクセス許可を付与します。Select the banner on top of the Active Directory admin page and grant permission to the current user.

    Active Directory にアクセスするためのアクセス許可を SQL マネージド インスタンスに付与するダイアログのスクリーンショット。

  5. 操作が正常に完了すると、右上隅に次の通知が表示されます。After the operation succeeds, the following notification will show up in the top-right corner:

    Active Directory の読み取りアクセス許可がマネージド インスタンスに対して正常に更新されたことを確認する通知のスクリーンショット。

  6. これで、SQL Managed Instance に対する Azure AD 管理者を選択できるようになります。Now you can choose your Azure AD admin for your SQL Managed Instance. 選択するには、[Active Directory 管理者] ページで [管理者の設定] を選択します。For that, on the Active Directory admin page, select Set admin command.

    選択された SQL マネージド インスタンスの [Active Directory 管理者] ページで [管理者の設定] が強調表示されているスクリーンショット。

  7. Azure AD 管理者ページで、ユーザーを検索し、管理者にするユーザーまたはグループを選択してから、 [選択] を選択します。On the Azure AD admin page, search for a user, select the user or group to be an administrator, and then select Select .

    [Active Directory 管理者] ページには、Active Directory のメンバーとグループがすべて表示されます。The Active Directory admin page shows all members and groups of your Active Directory. 淡色表示されているユーザーまたはグループは、Azure AD 管理者としてサポートされていないため選択できませんUsers or groups that are grayed out can't be selected because they aren't supported as Azure AD administrators. サポートされている管理者の一覧については、「Azure AD の機能と制限事項」をご覧ください。See the list of supported admins in Azure AD Features and Limitations. ロール ベースのアクセス制御 (RBAC) は Azure portal にのみ適用され、SQL Database、SQL Managed Instance、または Azure Synapse には反映されません。Role-based access control (RBAC) applies only to the Azure portal and isn't propagated to SQL Database, SQL Managed Instance, or Azure Synapse.

    Azure Active Directory 管理者を追加する

  8. [Active Directory 管理者] ページの上部にある [保存] を選択します。At the top of the Active Directory admin page, select Save .

    上部で [管理者の設定] と [管理者の削除] のボタンの横に [保存] ボタンがある [Active Directory 管理者] ページのスクリーンショット。

    管理者を変更する処理には数分かかる場合があります。The process of changing the administrator may take several minutes. 処理が完了すると、 [Active Directory 管理者] ボックスに新しい管理者が表示されます。Then the new administrator appears in the Active Directory admin box.

SQL Managed Instance に対する Azure AD 管理者をプロビジョニングした後、CREATE LOGIN 構文で Azure AD サーバー プリンシパル (ログイン) の作成を始めることができます。After provisioning an Azure AD admin for your SQL Managed Instance, you can begin to create Azure AD server principals (logins) with the CREATE LOGIN syntax. 詳細については、SQL Managed Instance の概要に関する記事を参照してください。For more information, see SQL Managed Instance overview.

ヒント

後で管理者を削除するには、[Active Directory 管理者] ページの上部にある [管理者の削除] を選択し、 [保存] を選択します。To later remove an Admin, at the top of the Active Directory admin page, select Remove admin , and then select Save .

PowerShellPowerShell

PowerShell を使用して SQL Managed Instance に Azure AD の読み取りアクセス許可を付与するには、次のスクリプトを実行します。To grant your SQL Managed Instance Azure AD read permission by using the PowerShell, run this script:

# Gives Azure Active Directory read permission to a Service Principal representing the SQL Managed Instance.
# Can be executed only by a "Company Administrator", "Global Administrator", or "Privileged Role Administrator" type of user.

$aadTenant = "<YourTenantId>" # Enter your tenant ID
$managedInstanceName = "MyManagedInstance"

# Get Azure AD role "Directory Users" and create if it doesn't exist
$roleName = "Directory Readers"
$role = Get-AzureADDirectoryRole | Where-Object {$_.displayName -eq $roleName}
if ($role -eq $null) {
    # Instantiate an instance of the role template
    $roleTemplate = Get-AzureADDirectoryRoleTemplate | Where-Object {$_.displayName -eq $roleName}
    Enable-AzureADDirectoryRole -RoleTemplateId $roleTemplate.ObjectId
    $role = Get-AzureADDirectoryRole | Where-Object {$_.displayName -eq $roleName}
}

# Get service principal for your SQL Managed Instance
$roleMember = Get-AzureADServicePrincipal -SearchString $managedInstanceName
$roleMember.Count
if ($roleMember -eq $null) {
    Write-Output "Error: No Service Principals with name '$    ($managedInstanceName)', make sure that managedInstanceName parameter was     entered correctly."
    exit
}
if (-not ($roleMember.Count -eq 1)) {
    Write-Output "Error: More than one service principal with name pattern '$    ($managedInstanceName)'"
    Write-Output "Dumping selected service principals...."
    $roleMember
    exit
}

# Check if service principal is already member of readers role
$allDirReaders = Get-AzureADDirectoryRoleMember -ObjectId $role.ObjectId
$selDirReader = $allDirReaders | where{$_.ObjectId -match     $roleMember.ObjectId}

if ($selDirReader -eq $null) {
    # Add principal to readers role
    Write-Output "Adding service principal '$($managedInstanceName)' to     'Directory Readers' role'..."
    Add-AzureADDirectoryRoleMember -ObjectId $role.ObjectId -RefObjectId     $roleMember.ObjectId
    Write-Output "'$($managedInstanceName)' service principal added to     'Directory Readers' role'..."

    #Write-Output "Dumping service principal '$($managedInstanceName)':"
    #$allDirReaders = Get-AzureADDirectoryRoleMember -ObjectId $role.ObjectId
    #$allDirReaders | where{$_.ObjectId -match $roleMember.ObjectId}
}
else {
    Write-Output "Service principal '$($managedInstanceName)' is already     member of 'Directory Readers' role'."
}

SQL Managed Instance に対する PowerShellPowerShell for SQL Managed Instance

PowerShell コマンドレットを実行するには、Azure PowerShell をインストールし、実行している必要があります。To run PowerShell cmdlets, you need to have Azure PowerShell installed and running. 詳細については、「 Azure PowerShell のインストールと構成の方法」をご覧ください。For detailed information, see How to install and configure Azure PowerShell.

重要

PowerShell Azure Resource Manager (RM) モジュールは Azure SQL Managed Instance によってまだサポートされていますが、今後の開発はすべて Az.Sql モジュールを対象に行われます。The PowerShell Azure Resource Manager (RM) module is still supported by Azure SQL Managed Instance, but all future development is for the Az.Sql module. AzureRM モジュールのバグ修正は、少なくとも 2020 年 12 月までは引き続き受け取ることができます。The AzureRM module will continue to receive bug fixes until at least December 2020. Az モジュールと AzureRm モジュールのコマンドの引数は実質的に同じです。The arguments for the commands in the Az module and in the AzureRm modules are substantially identical. その互換性の詳細については、「新しい Azure PowerShell Az モジュールの概要」を参照してください。For more about their compatibility, see Introducing the new Azure PowerShell Az module.

Azure AD 管理者をプロビジョニングするには、次のような Azure PowerShell コマンドを実行する必要があります。To provision an Azure AD admin, execute the following Azure PowerShell commands:

  • Connect-AzAccountConnect-AzAccount
  • Select-AzSubscriptionSelect-AzSubscription

次の表では、SQL Managed Instance に対する Azure AD 管理者のプロビジョニングと管理に使用するコマンドレットの一覧を示します。The cmdlets used to provision and manage Azure AD admin for your SQL Managed Instance are listed in the following table:

コマンドレット名Cmdlet name 説明Description
Set-AzSqlInstanceActiveDirectoryAdministratorSet-AzSqlInstanceActiveDirectoryAdministrator 現在のサブスクリプションで SQL Managed Instance に対する Azure AD 管理者をプロビジョニングします。Provisions an Azure AD administrator for the SQL Managed Instance in the current subscription. (現在のサブスクリプションから実行する必要があります)。(Must be from the current subscription)
Remove-AzSqlInstanceActiveDirectoryAdministratorRemove-AzSqlInstanceActiveDirectoryAdministrator 現在のサブスクリプションで SQL Managed Instance に対する Azure AD 管理者を削除します。Removes an Azure AD administrator for the SQL Managed Instance in the current subscription.
Get-AzSqlInstanceActiveDirectoryAdministratorGet-AzSqlInstanceActiveDirectoryAdministrator 現在のサブスクリプションでの SQL Managed Instance に対する Azure AD 管理者に関する情報を返します。Returns information about an Azure AD administrator for the SQL Managed Instance in the current subscription.

次のコマンドでは、ResourceGroup01 というリソース グループに関連付けられている、ManagedInstance01 という SQL Managed Instance の Azure AD 管理者に関する情報が取得されます。The following command gets information about an Azure AD administrator for a SQL Managed Instance named ManagedInstance01 that is associated with a resource group named ResourceGroup01.

Get-AzSqlInstanceActiveDirectoryAdministrator -ResourceGroupName "ResourceGroup01" -InstanceName "ManagedInstance01"

次のコマンドでは、ManagedInstance01 という SQL Managed Instance の、DBAs という Azure AD 管理者グループがプロビジョニングされます。The following command provisions an Azure AD administrator group named DBAs for the SQL Managed Instance named ManagedInstance01. このサーバーは、リソース グループ ResourceGroup01 に関連付けられています。This server is associated with resource group ResourceGroup01.

Set-AzSqlInstanceActiveDirectoryAdministrator -ResourceGroupName "ResourceGroup01" -InstanceName "ManagedInstance01" -DisplayName "DBAs" -ObjectId "40b79501-b343-44ed-9ce7-da4c8cc7353b"

次のコマンドを実行すると、リソース グループ ResourceGroup01 に関連付けられている、ManagedInstanceName01 という SQL Managed Instance の Azure AD 管理者が削除されます。The following command removes the Azure AD administrator for the SQL Managed Instance named ManagedInstanceName01 associated with the resource group ResourceGroup01.

Remove-AzSqlInstanceActiveDirectoryAdministrator -ResourceGroupName "ResourceGroup01" -InstanceName "ManagedInstanceName01" -Confirm -PassThru

Azure AD 管理者をプロビジョニングする (SQL Database)Provision Azure AD admin (SQL Database)

重要

SQL Database または Azure Synapse に対するサーバーをプロビジョニングする場合にのみ、次の手順に従います。Only follow these steps if you are provisioning a server for SQL Database or Azure Synapse.

次の 2 つの手順では、Azure portal と PowerShell を使用し、サーバーに対して Azure Active Directory 管理者をプロビジョニングする方法を示します。The following two procedures show you how to provision an Azure Active Directory administrator for your server in the Azure portal and by using PowerShell.

Azure portalAzure portal

  1. Azure Portal の右上隅にあるユーザー アイコンをクリックすると、Active Directory 候補の一覧がドロップダウンで表示されます。In the Azure portal, in the upper-right corner, select your connection to drop down a list of possible Active Directories. 既定の Azure AD として適切な Active Directory を選択します。Choose the correct Active Directory as the default Azure AD. このステップでは、サブスクリプションに関連付けられている Active Directory をサーバーとリンクすることで、Azure AD とサーバーの両方に同じサブスクリプションが使用されるようにします。This step links the subscription-associated Active Directory with server making sure that the same subscription is used for both Azure AD and the server.

  2. [SQL サーバー] を探して選択します。Search for and select SQL server .

    [SQL サーバー] を探して選択する

    注意

    このページでは、 [SQL Server] を選択する前に、名前の横にある 星マーク を選択してそのカテゴリを " お気に入りに追加 " し、 [SQL Server] を左側のナビゲーション バーに追加することができます。On this page, before you select SQL servers , you can select the star next to the name to favorite the category and add SQL servers to the left navigation bar.

  3. [SQL Server] ページで、 [Active Directory 管理者] を選択します。On the SQL Server page, select Active Directory admin .

  4. [Active Directory 管理者] ページで、 [管理者の設定] を選択します。In the Active Directory admin page, select Set admin .

    [SQL サーバー] の Active Directory 管理者の設定

  5. [管理者の追加] ページで、ユーザーを検索し、管理者にするユーザーまたはグループを選択してから [選択] を選択します。In the Add admin page, search for a user, select the user or group to be an administrator, and then select Select . [Active Directory 管理者] ページには、Active Directory のメンバーとグループがすべて表示されます。(The Active Directory admin page shows all members and groups of your Active Directory. 淡色表示されているユーザーまたはグループは、Azure AD 管理者としてサポートされていないため選択できませんUsers or groups that are grayed out cannot be selected because they are not supported as Azure AD administrators. (「 Azure Active Directory 認証を使用して SQL Database または Azure Synapse を認証する」の「 Azure AD の機能と制限事項 」セクションでサポートされている管理者の一覧を参照してください)。ロール ベースのアクセス制御 (RBAC) はポータルにのみ適用され、SQL Server には反映されません。(See the list of supported admins in the Azure AD Features and Limitations section of Use Azure Active Directory Authentication for authentication with SQL Database or Azure Synapse.) Role-based access control (RBAC) applies only to the portal and is not propagated to SQL Server.

    Azure Active Directory 管理者を選択する

  6. [Active Directory 管理者] ページの上部にある [保存] を選択します。At the top of the Active Directory admin page, select SAVE .

    管理者の保存

管理者を変更する処理には数分かかる場合があります。The process of changing the administrator may take several minutes. 処理が完了すると、 [Active Directory 管理者] ボックスに新しい管理者が表示されます。Then the new administrator appears in the Active Directory admin box.

注意

Azure AD 管理者を設定するときは、新しい管理者名 (ユーザーまたはグループ) がサーバー認証ユーザーとして仮想 master データベースに既に存在していてはいけません。When setting up the Azure AD admin, the new admin name (user or group) cannot already be present in the virtual master database as a server authentication user. 存在する場合、Azure AD 管理者のセットアップは失敗します。その作成をロールバックされ、そのような管理者 (名前) が既に存在していることが示されます。If present, the Azure AD admin setup will fail; rolling back its creation and indicating that such an admin (name) already exists. そのようなサーバー認証ユーザーは Azure AD に属していないため、Azure AD 認証を使用してサーバーに接続しようとしても失敗します。Since such a server authentication user is not part of the Azure AD, any effort to connect to the server using Azure AD authentication fails.

後で管理者を削除するには、 [Active Directory 管理者] ページの上部にある [管理者の削除] を選択し、 [保存] を選択します。To later remove an Admin, at the top of the Active Directory admin page, select Remove admin , and then select Save .

SQL Database と Azure Synapse 用の PowerShellPowerShell for SQL Database and Azure Synapse

PowerShell コマンドレットを実行するには、Azure PowerShell をインストールし、実行している必要があります。To run PowerShell cmdlets, you need to have Azure PowerShell installed and running. 詳細については、「 Azure PowerShell のインストールと構成の方法」をご覧ください。For detailed information, see How to install and configure Azure PowerShell. Azure AD 管理者をプロビジョニングするには、次のような Azure PowerShell コマンドを実行する必要があります。To provision an Azure AD admin, execute the following Azure PowerShell commands:

  • Connect-AzAccountConnect-AzAccount
  • Select-AzSubscriptionSelect-AzSubscription

SQL Database および Azure Synapse に対する Azure AD 管理者のプロビジョニングと管理に使用するコマンドレット:Cmdlets used to provision and manage Azure AD admin for SQL Database and Azure Synapse:

コマンドレット名Cmdlet name 説明Description
Set-AzSqlServerActiveDirectoryAdministratorSet-AzSqlServerActiveDirectoryAdministrator SQL Server または Azure Synapse をホストするサーバーに対する Azure Active Directory 管理者をプロビジョニングします。Provisions an Azure Active Directory administrator for the server hosting SQL Database or Azure Synapse. (現在のサブスクリプションから実行する必要があります)。(Must be from the current subscription)
Remove-AzSqlServerActiveDirectoryAdministratorRemove-AzSqlServerActiveDirectoryAdministrator SQL Server または Azure Synapse をホストするサーバーに対する Azure Active Directory 管理者を削除します。Removes an Azure Active Directory administrator for the server hosting SQL Database or Azure Synapse.
Get-AzSqlServerActiveDirectoryAdministratorGet-AzSqlServerActiveDirectoryAdministrator SQL Database または Azure Synapse をホストするサーバーに対して現在構成されている Azure Active Directory 管理者に関する情報を返します。Returns information about an Azure Active Directory administrator currently configured for the server hosting SQL Database or Azure Synapse.

これらの各コマンドの情報を確認するには、PowerShell の get-help コマンドを使用します。Use PowerShell command get-help to see more information for each of these commands. たとえば、「 get-help Set-AzSqlServerActiveDirectoryAdministrator 」のように入力します。For example, get-help Set-AzSqlServerActiveDirectoryAdministrator.

次のスクリプトでは、 Group-23 という名前のリソース グループ内にあるサーバー demo_server に対して、 DBA_Group という名前の Azure AD 管理者グループ (オブジェクト ID 40b79501-b343-44ed-9ce7-da4c8cc7353f) をプロビジョニングします。The following script provisions an Azure AD administrator group named DBA_Group (object ID 40b79501-b343-44ed-9ce7-da4c8cc7353f) for the demo_server server in a resource group named Group-23 :

Set-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "Group-23" -ServerName "demo_server" -DisplayName "DBA_Group"

DisplayName 入力パラメーターには、Azure AD の表示名またはユーザー プリンシパル名を使用できます。The DisplayName input parameter accepts either the Azure AD display name or the User Principal Name. たとえば、DisplayName="John Smith"DisplayName="johns@contoso.com"す。For example, DisplayName="John Smith" and DisplayName="johns@contoso.com". Azure AD グループの場合は、Azure AD の表示名のみがサポートされています。For Azure AD groups only the Azure AD display name is supported.

注意

Azure PowerShell コマンド Set-AzSqlServerActiveDirectoryAdministrator では、サポートされていないユーザーに対する Azure AD 管理者のプロビジョニングは禁止されていません。The Azure PowerShell command Set-AzSqlServerActiveDirectoryAdministrator does not prevent you from provisioning Azure AD admins for unsupported users. サポートされていないユーザーのプロビジョニングは可能ですが、このようなユーザーはデータベースに接続できませんAn unsupported user can be provisioned, but can not connect to a database.

次の例では、オプションとして ObjectID を使用します。The following example uses the optional ObjectID :

Set-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "Group-23" -ServerName "demo_server" `
    -DisplayName "DBA_Group" -ObjectId "40b79501-b343-44ed-9ce7-da4c8cc7353f"

注意

DisplayName が一意でない場合は、Azure AD の ObjectID が必要です。The Azure AD ObjectID is required when the DisplayName is not unique. ObjectIDDisplayName の値を取得するには、Azure クラシック ポータルの [Active Directory] セクションを使用して、ユーザーまたはグループのプロパティを確認します。To retrieve the ObjectID and DisplayName values, use the Active Directory section of Azure Classic Portal, and view the properties of a user or group.

次の例では、サーバーに対する現在の Azure AD 管理者に関する情報が返されます。The following example returns information about the current Azure AD admin for the server:

Get-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "Group-23" -ServerName "demo_server" | Format-List

次の例では、Azure AD 管理者が削除されます。The following example removes an Azure AD administrator:

Remove-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "Group-23" -ServerName "demo_server"

注意

Azure Active Directory 管理者は、REST API を使用してプロビジョニングすることもできます。You can also provision an Azure Active Directory Administrator by using the REST APIs. 詳細については、Service Management REST API リファレンスと Azure SQL Database の操作に関するページを参照してください。For more information, see Service Management REST API Reference and Operations for Azure SQL Database Operations for Azure SQL Database

クライアント コンピューターを構成するConfigure your client computers

Azure AD の ID を使用して SQL Database または Azure Synapse に接続するアプリケーションまたはユーザーが存在するすべてクライアント コンピューターには、次のソフトウェアをインストールする必要があります。On all client machines, from which your applications or users connect to SQL Database or Azure Synapse using Azure AD identities, you must install the following software:

これらの要件は、次の操作を行うことで満たすことができます。You can meet these requirements by:

  • 最新バージョンの SQL Server Management Studio または SQL Server Data Tools をインストールすると、.NET Framework 4.6 の要件が満たされます。Installing the latest version of SQL Server Management Studio or SQL Server Data Tools meets the .NET Framework 4.6 requirement.
    • SSMS の場合、x86 バージョンの ADAL.DLL がインストールされます。SSMS installs the x86 version of ADAL.DLL .
    • SSDT の場合、amd64 バージョンの ADAL.DLL がインストールされます。SSDT installs the amd64 version of ADAL.DLL .
    • Visual Studio の「ダウンロード」にある最新の Visual Studio をインストールすると、.NET Framework 4.6 の要件は満たされますが、必要な amd64 バージョンの ADAL.DLL はインストールされません。The latest Visual Studio from Visual Studio Downloads meets the .NET Framework 4.6 requirement, but does not install the required amd64 version of ADAL.DLL .

Azure AD ID にマップされる包含ユーザーを作成するCreate contained users mapped to Azure AD identities

SQL Managed Instance では Azure AD サーバー プリンシパル (ログイン) がサポートされているため、包含データベース ユーザーを使用する必要はありません。Because SQL Managed Instance supports Azure AD server principals (logins), using contained database users is not required. Azure AD サーバー プリンシパル (ログイン) を使用すると、Azure AD ユーザー、グループ、またはアプリケーションからログインを作成できます。Azure AD server principals (logins) enable you to create logins from Azure AD users, groups, or applications. つまり、包含データベース ユーザーではなく、Azure AD サーバー ログインを使用して、SQL Managed Instance での認証を行うことができます。This means that you can authenticate with your SQL Managed Instance by using the Azure AD server login rather than a contained database user. 詳細については、SQL Managed Instance の概要に関する記事を参照してください。For more information, see SQL Managed Instance overview. Azure AD サーバー プリンシパル (ログイン) の作成の構文については、「CREATE LOGIN」を参照してください。For syntax on creating Azure AD server principals (logins), see CREATE LOGIN.

ただし、SQL Database と Azure Synapse で Azure Active Directory 認証を使用するには、Azure AD ID に基づく包含データベース ユーザーを使用する必要があります。However, using Azure Active Directory authentication with SQL Database and Azure Synapse requires using contained database users based on an Azure AD identity. 包含データベース ユーザーは、master データベース内にログインを持たず、データベースに関連付けられている Azure AD の ID にマップされます。A contained database user does not have a login in the master database, and maps to an identity in Azure AD that is associated with the database. Azure AD の ID には、個々のユーザー アカウントにもグループ アカウントにもなります。The Azure AD identity can be either an individual user account or a group. 包含データベース ユーザーの詳細については、「 包含データベース ユーザー - データベースの可搬性を確保する」を参照してください。For more information about contained database users, see Contained Database Users- Making Your Database Portable.

注意

Azure Portal を使用して、データベース ユーザー (管理者を除く) を作成することはできません。Database users (with the exception of administrators) cannot be created using the Azure portal. Azure ロールは、SQL Database、SQL Managed Instance、または Azure Synapse 内のデータベースには反映されません。Azure roles are not propagated to the database in SQL Database, the SQL Managed Instance, or Azure Synapse. Azure ロールは Azure リソースの管理に使用され、データベースのアクセス許可には適用されません。Azure roles are used for managing Azure Resources, and do not apply to database permissions. たとえば、 SQL Server 共同作成者 ロールでは、SQL Database、SQL Managed Instance、または Azure Synapse 内のデータベースに接続するためのアクセス権は付与されません。For example, the SQL Server Contributor role does not grant access to connect to the database in SQL Database, the SQL Managed Instance, or Azure Synapse. Transact-SQL ステートメントを使用して、アクセス許可をデータベースで直接付与する必要があります。The access permission must be granted directly in the database using Transact-SQL statements.

警告

T-SQL の CREATE LOGIN ステートメントと CREATE USER ステートメントのユーザー名に含まれるコロン : やアンパサンド & などの特殊文字は、サポートされていません。Special characters like colon : or ampersand & when included as user names in the T-SQL CREATE LOGIN and CREATE USER statements are not supported.

Azure AD ベースの包含データベース ユーザー (データベースを所有するサーバー管理者以外) を作成するには、少なくとも ALTER ANY USER アクセス許可を持つユーザーとして、Azure AD の ID でデータベースに接続します。To create an Azure AD-based contained database user (other than the server administrator that owns the database), connect to the database with an Azure AD identity, as a user with at least the ALTER ANY USER permission. その後、次の Transact-SQL 構文を使用します。Then use the following Transact-SQL syntax:

CREATE USER <Azure_AD_principal_name> FROM EXTERNAL PROVIDER;

Azure_AD_principal_name には、Azure AD ユーザーのユーザー プリンシパル名または Azure AD のグループの表示名を指定できます。Azure_AD_principal_name can be the user principal name of an Azure AD user or the display name for an Azure AD group.

例: Azure AD のフェデレーション ドメインまたはマネージド ドメインのユーザーを表す包含データベース ユーザーを作成するには、次のようにします。Examples: To create a contained database user representing an Azure AD federated or managed domain user:

CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
CREATE USER [alice@fabrikam.onmicrosoft.com] FROM EXTERNAL PROVIDER;

Azure AD またはフェデレーション ドメインのグループを表す包含データベース ユーザーを作成するには、セキュリティ グループの表示名を指定します。To create a contained database user representing an Azure AD or federated domain group, provide the display name of a security group:

CREATE USER [ICU Nurses] FROM EXTERNAL PROVIDER;

Azure AD トークンを使用して接続するアプリケーションを表す包含データベース ユーザーを作成するには、次のようにします。To create a contained database user representing an application that connects using an Azure AD token:

CREATE USER [appName] FROM EXTERNAL PROVIDER;

注意

このコマンドでは、SQL がログイン ユーザーの代わりに Azure AD (「外部プロバイダー」) にアクセスすることが必要です。This command requires that SQL access Azure AD (the "external provider") on behalf of the logged-in user. 場合によっては、Azure AD によって SQL に例外が返されることがあります。Sometimes, circumstances will arise that cause Azure AD to return an exception back to SQL. このような場合、ユーザーには Azure AD 固有のエラー メッセージを含む SQL エラー 33134 が表示されます。In these cases, the user will see SQL error 33134, which should contain the Azure AD-specific error message. このエラーはほとんどの場合、アクセスが拒否されたこと、ユーザーがリソースにアクセスするために MFA に登録する必要があること、あるいはファーストパーティのアプリケーション間のアクセスを事前承認によって処理する必要があることを示します。Most of the time, the error will say that access is denied, or that the user must enroll in MFA to access the resource, or that access between first-party applications must be handled via preauthorization. 最初の 2 つのケースでは、問題は通常、ユーザーの Azure AD テナントで設定されている条件付きアクセス ポリシーによって発生し、ポリシーによってユーザーは外部プロバイダーにアクセスできなくなります。In the first two cases, the issue is usually caused by Conditional Access policies that are set in the user's Azure AD tenant: they prevent the user from accessing the external provider. アプリケーション '00000002-0000-0000-c000-000000000000' (Azure AD Graph API のアプリケーション ID) へのアクセスを許可するように CA ポリシーを更新すると、問題が解決されます。Updating the CA policies to allow access to the application '00000002-0000-0000-c000-000000000000' (the application ID of the Azure AD Graph API) should resolve the issue. 「ファーストパーティのアプリケーション間のアクセスを事前承認で処理する必要がある」というエラーが発生した場合、この問題は、ユーザーがサービス プリンシパルとしてサインインしていることが原因です。In the case that the error says access between first-party applications must be handled via preauthorization, the issue is because the user is signed in as a service principal. 代わりにユーザーによってコマンドを実行した場合、コマンドは成功するはずです。The command should succeed if it is executed by a user instead.

ヒント

使用している Azure サブスクリプションに関連付けられている Azure Active Directory とは別の Azure Active Directory から、ユーザーを直接作成することはできません。You cannot directly create a user from an Azure Active Directory other than the Azure Active Directory that is associated with your Azure subscription. ただし、別の Active Directory のメンバーのうち、関連付けられている Active Directory にインポート済みのユーザー (外部ユーザーと呼ばれます) は、テナント Active Directory の Active Directory グループに追加できます。However, members of other Active Directories that are imported users in the associated Active Directory (known as external users) can be added to an Active Directory group in the tenant Active Directory. 外部の Active Directory のユーザーは、この AD グループの包含データベース ユーザーを作成することで SQL Database にアクセスできるようになります。By creating a contained database user for that AD group, the users from the external Active Directory can gain access to SQL Database.

Azure Active Directory の ID に基づく包含データベース ユーザーの作成の詳細については、「 CREATE USER (Transact-SQL)」を参照してください。For more information about creating contained database users based on Azure Active Directory identities, see CREATE USER (Transact-SQL).

注意

サーバーの Azure Active Directory 管理者を削除すると、Azure AD 認証ユーザーはサーバーに接続できなくなります。Removing the Azure Active Directory administrator for the server prevents any Azure AD authentication user from connecting to the server. 必要に応じて、SQL Database 管理者は不要な Azure AD ユーザーを手動で削除できます。If necessary, unusable Azure AD users can be dropped manually by a SQL Database administrator.

注意

" 接続がタイムアウトしました " と表示された場合は、接続文字列の TransparentNetworkIPResolution パラメーターを false に設定することが必要になる場合があります。If you receive a Connection Timeout Expired , you may need to set the TransparentNetworkIPResolution parameter of the connection string to false. 詳しくは、「Connection timeout issue with .NET Framework 4.6.1 - TransparentNetworkIPResolution」(.NET Framework 4.6.1 での接続タイムアウトの問題 - TransparentNetworkIPResolution) をご覧ください。For more information, see Connection timeout issue with .NET Framework 4.6.1 - TransparentNetworkIPResolution.

データベース ユーザーを作成すると、そのユーザーには CONNECT アクセス許可が付与され、 PUBLIC ロールのメンバーとしてそのデータベースに接続できるようになります。When you create a database user, that user receives the CONNECT permission and can connect to that database as a member of the PUBLIC role. 最初にこのユーザーが利用できるアクセス許可は、 PUBLIC ロールに付与されているアクセス許可か、またはそのユーザーが属している Azure AD グループに付与されているアクセス許可のみです。Initially the only permissions available to the user are any permissions granted to the PUBLIC role, or any permissions granted to any Azure AD groups that they are a member of. Azure AD ベースの包含データベース ユーザーをプロビジョニングすると、他の種類のユーザーにアクセス許可を付与する場合と同様に、そのユーザーに追加のアクセス許可を付与できます。Once you provision an Azure AD-based contained database user, you can grant the user additional permissions, the same way as you grant permission to any other type of user. 通常は、データベース ロールにアクセス許可を付与し、そのロールにユーザーを追加します。Typically grant permissions to database roles, and add users to roles. 詳細については、 データベース エンジンのアクセス許可の基本知識に関するページを参照してください。For more information, see Database Engine Permission Basics. 特殊な SQL Database ロールの詳細については、「 Azure SQL Database におけるデータベースとログインの管理」を参照してください。For more information about special SQL Database roles, see Managing Databases and Logins in Azure SQL Database. 外部ユーザーとしてマネージド ドメインにインポートされるフェデレーション ドメイン ユーザー アカウントは、マネージド ドメインの ID を使用する必要があります。A federated domain user account that is imported into a managed domain as an external user, must use the managed domain identity.

注意

データベースのメタデータでは、Azure AD ユーザーはタイプ E (EXTERNAL_USER) 、グループはタイプ X (EXTERNAL_GROUPS) でマークされます。Azure AD users are marked in the database metadata with type E (EXTERNAL_USER) and for groups with type X (EXTERNAL_GROUPS). 詳細については、「sys.database_principals」を参照してください。For more information, see sys.database_principals.

SSMS または SSDT を使用してデータベースに接続するConnect to the database using SSMS or SSDT

Azure AD 管理者が正しく設定されていることを確認するには、Azure AD の管理者アカウントを使用して master データベースに接続します。To confirm the Azure AD administrator is properly set up, connect to the master database using the Azure AD administrator account. Azure AD ベースの包含データベース ユーザー (データベースを所有しているサーバー管理者以外) をプロビジョニングするには、そのデータベースへのアクセス権を持つ Azure AD の ID を使用してデータベースに接続します。To provision an Azure AD-based contained database user (other than the server administrator that owns the database), connect to the database with an Azure AD identity that has access to the database.

重要

Azure Active Directory 認証は、SQL Server 2016 Management Studio および Visual Studio 2015 の SQL Server Data Tools でサポートされています。Support for Azure Active Directory authentication is available with SQL Server 2016 Management Studio and SQL Server Data Tools in Visual Studio 2015. SSMS の 2016 年 8 月のリリースには、Active Directory Universal 認証のサポートも含まれます。これにより、管理者は、電話、テキスト メッセージ、スマート カードと暗証番号 (PIN)、またはモバイル アプリ通知を使用する Multi-Factor Authentication を要求できます。The August 2016 release of SSMS also includes support for Active Directory Universal Authentication, which allows administrators to require Multi-Factor Authentication using a phone call, text message, smart cards with pin, or mobile app notification.

Azure AD の ID で SSMS または SSDT を利用して接続するUsing an Azure AD identity to connect using SSMS or SSDT

次の手順では、SQL Server Management Studio または SQL Server Database Tools で Azure AD の ID を使用して SQL Database に接続する方法を示します。The following procedures show you how to connect to SQL Database with an Azure AD identity using SQL Server Management Studio or SQL Server Database Tools.

Active Directory 統合認証Active Directory integrated authentication

フェデレーションされているドメイン、またはパススルーおよびパスワード ハッシュ認証のためのシームレスなシングル サインオン用に構成されたマネージド ドメインからの Azure Active Directory 資格情報を使用して Windows にログインしている場合に、この方法を使用します。Use this method if you are logged into Windows using your Azure Active Directory credentials from a federated domain, or a managed domain that is configured for seamless single sign-on for pass-through and password hash authentication. 詳しくは、「Azure Active Directory シームレス シングル サインオン」をご覧ください。For more information, see Azure Active Directory Seamless Single Sign-On.

  1. Management Studio または Data Tools を起動し、 [サーバーへの接続] (または [データベース エンジンへの接続] ) ダイアログ ボックスの [認証] ボックスで、 [Azure Active Directory - 統合] を選択します。Start Management Studio or Data Tools and in the Connect to Server (or Connect to Database Engine ) dialog box, in the Authentication box, select Azure Active Directory - Integrated . 接続用の既存の資格情報が表示されるため、パスワードは不要であるか、入力できません。No password is needed or can be entered because your existing credentials will be presented for the connection.

    AD 統合認証を選択する

  2. [オプション] ボタンを選択し、 [接続プロパティ] ページの [データベースへの接続] ボックスに、接続先となるユーザー データベースの名前を入力します。Select the Options button, and on the Connection Properties page, in the Connect to database box, type the name of the user database you want to connect to. SSMS 17.x と 18.x の接続プロパティの違いに関する詳細については、多要素 Azure AD 認証に関する記事を参照してください。For more information, see the article Multi-factor Azure AD auth on the differences between the Connection Properties for SSMS 17.x and 18.x.

    データベース名を選択する

Active Directory パスワード認証Active Directory password authentication

Azure AD のマネージド ドメインを使用して Azure AD のプリンシパル名で接続する場合は、この方法を使用します。Use this method when connecting with an Azure AD principal name using the Azure AD managed domain. また、リモートで作業する場合など、ドメインにアクセスできないフェデレーション アカウントにも、この方法を使用できます。You can also use it for federated accounts without access to the domain, for example, when working remotely.

Azure AD クラウド専用 ID のユーザーまたは Azure AD ハイブリッド ID を使用するユーザーで、SQL Database または SQL Managed Instance 内のデータベースに対する認証を行うには、この方法を使用します。Use this method to authenticate to the database in SQL Database or the SQL Managed Instance with Azure AD cloud-only identity users, or those who use Azure AD hybrid identities. この方法では、ユーザーが自分の Windows 資格情報の使用を希望しているものの、そのローカル コンピューターがドメインに参加していない (リモート アクセスを使用しているなど) 場合に対応できます。This method supports users who want to use their Windows credential, but their local machine is not joined with the domain (for example, using remote access). このケースでは、Windows ユーザーは、自分のドメイン アカウントとパスワードを示して、SQL Database、SQL Managed Instance、または Azure Synapse 内のデータベースに対する認証を行うことができます。In this case, a Windows user can indicate their domain account and password, and can authenticate to the database in SQL Database, the SQL Managed Instance, or Azure Synapse.

  1. Management Studio または Data Tools を起動し、 [サーバーへの接続] (または [データベース エンジンへの接続] ) ダイアログ ボックスの [認証] ボックスで、 [Azure Active Directory - パスワード] を選択します。Start Management Studio or Data Tools and in the Connect to Server (or Connect to Database Engine ) dialog box, in the Authentication box, select Azure Active Directory - Password .

  2. [ユーザー名] ボックスに、Azure Active Directory のご自分のユーザー名を username@domain.com の形式で入力します。In the User name box, type your Azure Active Directory user name in the format username@domain.com . ユーザー名は、Azure Active Directory のアカウントか、Azure Active Directory を利用するマネージドまたはフェデレーション ドメインのアカウントになっている必要があります。User names must be an account from Azure Active Directory or an account from a managed or federated domain with Azure Active Directory.

  3. [パスワード] ボックスに、Azure Active Directory アカウントまたはマネージド/フェデレーション ドメイン アカウントのユーザー パスワードを入力します。In the Password box, type your user password for the Azure Active Directory account or managed/federated domain account.

    AD パスワード認証を選択する

  4. [オプション] ボタンを選択し、 [接続プロパティ] ページの [データベースへの接続] ボックスに、接続先となるユーザー データベースの名前を入力します。Select the Options button, and on the Connection Properties page, in the Connect to database box, type the name of the user database you want to connect to. (前のオプションの図を参照してください)。(See the graphic in the previous option.)

Active Directory 対話型認証Active Directory interactive authentication

Multi-Factor Authentication (MFA) の有無にかかわらず、対話形式でパスワードが要求される対話型認証には、この方法を使用します。Use this method for interactive authentication with or without Multi-Factor Authentication (MFA), with password being requested interactively. この方法を使用すると、Azure AD クラウド専用 ID のユーザーまたは Azure AD ハイブリッド ID を使用するユーザーについて、SQL Database、SQL Managed Instance、および Azure Synapse 内のデータベースに対する認証を行うことができます。This method can be used to authenticate to the database in SQL Database, the SQL Managed Instance, and Azure Synapse for Azure AD cloud-only identity users, or those who use Azure AD hybrid identities.

詳細については、SQL Database と Azure Synapse での多要素 Azure AD 認証の使用 (MFA の SSMS サポート)に関するページを参照してください。For more information, see Using multi-factor Azure AD authentication with SQL Database and Azure Synapse (SSMS support for MFA).

クライアント アプリケーションからの Azure AD の ID を使用した接続Using an Azure AD identity to connect from a client application

次の手順では、クライアント アプリケーションから Azure AD の ID を使用して SQL Database に接続する方法を示します。The following procedures show you how to connect to a SQL Database with an Azure AD identity from a client application.

Active Directory 統合認証Active Directory integrated authentication

統合 Windows 認証を使用するには、ドメインの Active Directory が Azure Active Directory にフェデレーションされているか、あるいは、パススルー認証またはパスワード ハッシュ認証のシームレス シングル サインオン用に構成されたマネージド ドメインになっている必要があります。To use integrated Windows authentication, your domain's Active Directory must be federated with Azure Active Directory, or should be a managed domain that is configured for seamless single sign-on for pass-through or password hash authentication. 詳しくは、「Azure Active Directory シームレス シングル サインオン」をご覧ください。For more information, see Azure Active Directory Seamless Single Sign-On.

注意

統合 Windows 認証用の MSAL.NET (Microsoft.Identity.Client) は、パススルーおよびパスワード ハッシュ認証のためのシームレスなシングル サインオンではサポートされていません。MSAL.NET (Microsoft.Identity.Client) for integrated Windows authentication is not supported for seamless single sign-on for pass-through and password hash authentication.

データベースに接続するクライアント アプリケーション (またはサービス) は、ユーザーのドメイン資格情報を使ってドメインに参加しているコンピューター上で実行されている必要があります。Your client application (or a service) connecting to the database must be running on a domain-joined machine under a user's domain credentials.

統合認証と Azure AD の ID を使用してデータベースに接続するには、データベース接続文字列内の Authentication キーワードを Active Directory Integrated に設定する必要があります。To connect to a database using integrated authentication and an Azure AD identity, the Authentication keyword in the database connection string must be set to Active Directory Integrated. 次の C# のコード サンプルでは、ADO .NET を使用します。The following C# code sample uses ADO .NET.

string ConnectionString = @"Data Source=n9lxnyuzhv.database.windows.net; Authentication=Active Directory Integrated; Initial Catalog=testdb;";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();

接続文字列キーワード Integrated Security=True は、Azure SQL Database への接続ではサポートされていません。The connection string keyword Integrated Security=True is not supported for connecting to Azure SQL Database. ODBC 接続を行うには、スペースを削除して Authentication を 'ActiveDirectoryIntegrated' に設定する必要があります。When making an ODBC connection, you will need to remove spaces and set Authentication to 'ActiveDirectoryIntegrated'.

Active Directory パスワード認証Active Directory password authentication

Azure AD クラウド専用 ID のユーザー アカウントまたは Azure AD ハイブリッド ID を使用するユーザーを使ってデータベースに接続するには、Authentication キーワードを Active Directory Password に設定する必要があります。To connect to a database using Azure AD cloud-only identity user accounts, or those who use Azure AD hybrid identities, the Authentication keyword must be set to Active Directory Password. 接続文字列にユーザー ID (UID) とパスワード (PWD) のキーワードと値を含める必要があります。The connection string must contain User ID/UID and Password/PWD keywords and values. 次の C# のコード サンプルでは、ADO .NET を使用します。The following C# code sample uses ADO .NET.

string ConnectionString =
@"Data Source=n9lxnyuzhv.database.windows.net; Authentication=Active Directory Password; Initial Catalog=testdb;  UID=bob@contoso.onmicrosoft.com; PWD=MyPassWord!";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();

GitHub の Azure AD 認証のデモで入手できるデモ コード サンプルを使用して、Azure AD の認証方法の詳細を確認してください。Learn more about Azure AD authentication methods using the demo code samples available at Azure AD Authentication GitHub Demo.

Azure AD トークンAzure AD token

この認証方法を使用すると、中間層サービスで、Azure AD からトークンを取得することにより、SQL Database、SQL Managed Instance、または Azure Synapse 内のデータベースに接続するための JSON Web トークン (JWT) を取得することができます。This authentication method allows middle-tier services to obtain JSON Web Tokens (JWT) to connect to the database in SQL Database, the SQL Managed Instance, or Azure Synapse by obtaining a token from Azure AD. この方法では、証明書ベースの認証を使用したサービス ID、サービス プリンシパル、およびアプリケーションなど、さまざまなアプリケーション シナリオを実現できます。This method enables various application scenarios including service identities, service principals, and applications using certificate-based authentication. Azure AD トークンの認証を使用するには、4 つの基本的な手順を完了する必要があります。You must complete four basic steps to use Azure AD token authentication:

  1. Azure Active Directory にアプリケーションを登録し、コードのクライアント ID を取得します。Register your application with Azure Active Directory and get the client ID for your code.
  2. アプリケーションを表すデータベース ユーザーを作成します (上の手順 6.Create a database user representing the application. で完了しています)。(Completed earlier in step 6.)
  3. アプリケーションを実行するクライアント コンピューターで証明書を作成します。Create a certificate on the client computer runs the application.
  4. アプリケーションのキーとして、証明書を追加します。Add the certificate as a key for your application.

サンプルの接続文字列を次に示します。Sample connection string:

string ConnectionString =@"Data Source=n9lxnyuzhv.database.windows.net; Initial Catalog=testdb;"
SqlConnection conn = new SqlConnection(ConnectionString);
conn.AccessToken = "Your JWT token"
conn.Open();

詳細については、「 SQL Server Security Blog (SQL Server のセキュリティに関するブログ)」をご覧ください。For more information, see SQL Server Security Blog. 証明書の追加の詳細については、「Azure Active Directory の証明書ベースの認証の概要」を参照してください。For information about adding a certificate, see Get started with certificate-based authentication in Azure Active Directory.

sqlcmdsqlcmd

次のステートメントは、sqlcmd のバージョン 13.1 を使用して接続しています。これは、ダウンロード センターから入手できます。The following statements, connect using version 13.1 of sqlcmd, which is available from the Download Center.

注意

-G を使用する sqlcmd コマンドは、システム ID で動作しないため、ユーザー プリンシパル ログインが必要です。sqlcmd with the -G command does not work with system identities, and requires a user principal login.

sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G  
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -U bob@contoso.com -P MyAADPassword -G -l 30

Azure AD 認証のトラブルシューティングTroubleshoot Azure AD authentication

Azure AD 認証に関する問題のトラブルシューティングのガイダンスについては、ブログ (https://techcommunity.microsoft.com/t5/azure-sql-database/troubleshooting-problems-related-to-azure-ad-authentication-with/ba-p/1062991) を参照してくださいGuidance on troubleshooting issues with Azure AD authentication can be found in the following blog: https://techcommunity.microsoft.com/t5/azure-sql-database/troubleshooting-problems-related-to-azure-ad-authentication-with/ba-p/1062991

次のステップNext steps