次の方法で共有


チュートリアル:Microsoft Entra グループにディレクトリ閲覧者ロールを割り当て、ロールの割り当てを管理する

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

この記事では、Microsoft Entra ID (旧称 Azure Active Directory) でグループを作成し、そのグループにディレクトリ閲覧者ロールを割り当てる方法について説明します。 ディレクトリ閲覧者アクセス許可により、グループの所有者は、Azure SQL DatabaseAzure SQL Managed Instance、および Azure Synapse Analyticsマネージド ID など、グループにメンバーを追加できます。 これにより、グローバル管理者または特権ロール管理者が、テナント内の各 論理サーバー ID にディレクトリ閲覧者ロールを直接割り当てる必要がなくなります。

Note

Microsoft Entra ID の、旧称は Azure Active Directory(Azure AD)です。

このチュートリアルでは、「Microsoft Entra グループを使用してロールの割り当てを管理する」で紹介されている機能を使用します。

ディレクトリ閲覧者ロールを Azure SQL の Microsoft Entra グループに割り当てる利点の詳細については、「Azure SQL の Microsoft Entra ID のディレクトリ閲覧者ロール」を参照してください。

Note

Microsoft Graph の Azure SQL サポートを使用すると、ディレクトリ閲覧者ロールを下位レベルのアクセス許可を使用して置き換えることができます。 詳細については、「Azure SQL の Microsoft Entra ID でのユーザー割り当てマネージド ID」を参照してください。

前提条件

Azure portal を使用したディレクトリ閲覧者ロールの割り当て

新しいグループを作成し、所有者とロールを割り当てる

  1. この初期設定には、全体管理者または特権ロール管理者のアクセス許可を持つユーザーが必要です。

  2. 特権ユーザーに Azure portal にサインインしてもらいます。

  3. Microsoft Entra ID のリソースに移動します。 [マネージド] で、 [グループ] に移動します。 新しいグループを作成するために、 [新しいグループ] を選択します。

  4. グループの種類として [セキュリティ] を選択し、残りのフィールドに入力します。 [グループに Microsoft Entra ロールを割り当てることができる] 設定が [はい] に切り替わっていることを確認します。 次に、Microsoft Entra ID のディレクトリ閲覧者ロールをグループに割り当てます。

  5. 作成されたグループに、Microsoft Entra ユーザーを所有者として割り当てます。 グループの所有者には、Microsoft Entra 管理者ロールが割り当てられていない通常の AD ユーザーを指定できます。 所有者は、SQL Database、SQL Managed Instance、または Azure Synapse を管理しているユーザーである必要があります。

    Microsoft Entra ID-new-group

  6. [作成]

作成されたグループの確認

Note

[グループの種類][セキュリティ] であることを確認します。 Microsoft 365 グループは、Azure SQL ではサポートされていません。

作成されたグループを確認および管理するには、Azure portal の [グループ] ペインに戻り、対象のグループ名を検索します。 グループを選択したら、 [管理] 設定の [所有者] および [メンバー] メニューで追加の所有者とメンバーを追加できます。 また、グループの割り当てられたロールを確認することもできます。

[メンバー]、[所有者]、[割り当てられたロール] の設定メニューを開くリンクが強調表示されている [グループ] ウィンドウのスクリーンショット。

Azure SQL マネージド ID をグループに追加する

Note

この例では SQL Managed Instance を使用していますが、SQL Database または Azure Synapse に同様の手順を適用して同じ結果を得ることができます。

以降の手順では、全体管理者または特権ロール管理者のユーザーは必要ありません。

  1. SQL Managed Instance を管理し、前に作成したグループの所有者であるユーザーとして Azure portal にログインします。

  2. Azure portal で、対象の SQL Managed Instance リソースの名前を見つけます。

    SQL インスタンス名 ssomitest とサブネット名 ManagedInstance が強調表示されている [SQL マネージド インスタンス] 画面のスクリーンショット。

    SQL Managed Instance のプロビジョニング中に、インスタンス用に Microsoft Entra ID が作成され、Microsoft Entra アプリケーションとして登録されます。 ID は、対象の SQL Managed Instance 名のプレフィックスと同じ名前になります。 次の手順に従って、SQL Managed Instance の ID (サービス プリンシパルとも呼ばれる) を見つけることができます。

    • Microsoft Entra ID のリソースに移動します。 [管理] 設定で、 [エンタープライズ アプリケーション] を選択します。 オブジェクト ID が、インスタンスの ID です。

    SQL マネージド インスタンスのオブジェクト ID が強調表示されている、Microsoft Entra ID リソースの [エンタープライズ アプリケーション] ページのスクリーンショット。

  3. Microsoft Entra ID のリソースに移動します。 [マネージド] で、 [グループ] に移動します。 自分が作成したグループを選択します。 対象のグループの [管理] 設定で、 [メンバー] を選択します。 [メンバーを追加] を選択し、上記で見つかった名前を検索して、対象の SQL Managed Instance のサービス プリンシパルをグループのメンバーとして追加します。

    SQL Managed Instance を新しいメンバーとして追加するためのオプションが強調表示されている Microsoft Entra リソースの [メンバー] ページのスクリーンショット。

Note

Azure システムによってサービス プリンシパルのアクセス許可が伝達され、Microsoft Graph API へのアクセスが許可されるまで、数分かかる場合があります。 SQL Managed Instance に対して Microsoft Entra 管理者をプロビジョニングする前に、数分間待つ必要がある場合があります。

解説

SQL Database と Azure Synapse では、論理サーバーの作成中または作成後にサーバー ID を作成できます。 SQL Database または Azure Synapse でサーバー ID を作成または設定する方法の詳細については、「サービス プリンシパルが Microsoft Entra ユーザーを作成できるようにする」を参照してください。

SQL Managed Instance では、マネージド インスタンスの Microsoft Entra 管理者を設定する前に、ディレクトリ閲覧者ロールをマネージド インスタンス ID に割り当てる必要があります。

論理サーバーの Microsoft Entra 管理者を設定する場合、SQL Database または Azure Synapse ではディレクトリ閲覧者ロールをサーバー ID に割り当てる必要はありません。 ただし、Microsoft Entra アプリケーションの代わりに SQL Database または Azure Synapse で Microsoft Entra オブジェクトを作成できるようにするには、ディレクトリ閲覧者ロールが必要になります。 このロールが論理サーバー ID に割り当てられていない場合、Azure SQL で Microsoft Entra ユーザーを作成することはできません。 詳細については、「Azure SQL での Microsoft Entra のサービス プリンシパル」をご覧ください

PowerShell を使用したディレクトリ閲覧者ロールの割り当て

重要

全体管理者または特権ロール管理者は、これらの初期手順を実行する必要があります。 PowerShell に加えて、Microsoft Entra ID には、Microsoft Entra ID でロールの割り当てが可能なグループを作成するための Microsoft Graph API が用意されています。

  1. 次のコマンドを使用して、Microsoft Graph PowerShell モジュールをダウンロードします。 場合によっては、管理者として PowerShell を実行する必要があります。

    Install-Module Microsoft.Graph.Authentication
    Import-Module Microsoft.Graph.Authentication
    # To verify that the module is ready to use, run the following command:
    Get-Module Microsoft.Graph.Authentication
    
  2. Microsoft Entra テナント に接続する

    Connect-MgGraph
    
  3. ディレクトリ閲覧者ロールを割り当てるセキュリティ グループを作成します。

    • DirectoryReaderGroupDirectory Reader GroupDirRead は、好みに応じて変更できます。
    $group = New-MgGroup -DisplayName "DirectoryReaderGroup" -Description "Directory Reader Group" -SecurityEnabled:$true -IsAssignableToRole:$true -MailEnabled:$false -MailNickname "DirRead"
    $group
    
  4. ディレクトリ閲覧者ロールをグループに割り当てます。

    # Displays the Directory Readers role information
    $roleDefinition = Get-MgRoleManagementDirectoryRoleDefinition -Filter "DisplayName eq 'Directory Readers'"
    $roleDefinition
    
    # Assigns the Directory Readers role to the group
    $roleAssignment = New-MgRoleManagementDirectoryRoleAssignment -DirectoryScopeId '/' -RoleDefinitionId $roleDefinition.Id -PrincipalId $group.Id
    $roleAssignment
    
  5. 所有者をグループに割り当てます。

    • <username> を、このグループを所有するユーザーに置き換えます。 これらの手順を繰り返すことで、複数の所有者を追加できます。
    $newGroupOwner = Get-MgUser -UserId "<username>"
    $newGroupOwner
    
    $GrOwner = New-MgGroupOwnerByRef -GroupId $group.Id -DirectoryObjectId $newGroupOwner.Id
    

    グループの所有者を確認します。

    Get-MgGroupOwner -GroupId $group.Id
    

    Azure portal でグループの所有者を確認することもできます。 「作成されたグループの確認」の手順に従います。

グループのメンバーとしてのサービス プリンシパルの割り当て

以降の手順では、全体管理者または特権ロール管理者のユーザーは必要ありません。

  1. Azure SQL リソースも管理するグループのオーナーで次のコマンドを実行して、Microsoft Entra ID に接続します。

    Connect-MgGraph
    
  2. 作成されたグループのメンバーとしてサービス プリンシパルを割り当てます。

    # Returns the service principal of your Azure SQL resource
    $managedIdentity = Get-MgServicePrincipal -Filter "displayName eq '<ServerName>'"
    $managedIdentity
    
    # Adds the service principal to the group
    New-MgGroupMember -GroupId $group.Id -DirectoryObjectId $managedIdentity.Id
    

    次のコマンドを実行すると、グループに追加されたことを示すサービス プリンシパルのオブジェクト ID が返されます。

    Get-MgGroupMember -GroupId $group.Id -Filter "Id eq '$($managedIdentity.Id)'"
    

次のステップ