チュートリアル:Microsoft Entra グループにディレクトリ閲覧者ロールを割り当て、ロールの割り当てを管理する
適用対象: Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics
この記事では、Microsoft Entra ID (旧称 Azure Active Directory) でグループを作成し、そのグループにディレクトリ閲覧者ロールを割り当てる方法について説明します。 ディレクトリ閲覧者アクセス許可により、グループの所有者は、Azure SQL Database、Azure 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」を参照してください。
前提条件
- Microsoft Entra テナント。 詳細については、Azure SQL による Microsoft Entra 認証の構成と管理を参照してください。
- SQL Database、SQL Managed Instance、または Azure Synapse。
Azure portal を使用したディレクトリ閲覧者ロールの割り当て
新しいグループを作成し、所有者とロールを割り当てる
特権ユーザーに Azure portal にサインインしてもらいます。
Microsoft Entra ID のリソースに移動します。 [マネージド] で、 [グループ] に移動します。 新しいグループを作成するために、 [新しいグループ] を選択します。
グループの種類として [セキュリティ] を選択し、残りのフィールドに入力します。 [グループに Microsoft Entra ロールを割り当てることができる] 設定が [はい] に切り替わっていることを確認します。 次に、Microsoft Entra ID のディレクトリ閲覧者ロールをグループに割り当てます。
作成されたグループに、Microsoft Entra ユーザーを所有者として割り当てます。 グループの所有者には、Microsoft Entra 管理者ロールが割り当てられていない通常の AD ユーザーを指定できます。 所有者は、SQL Database、SQL Managed Instance、または Azure Synapse を管理しているユーザーである必要があります。
[作成]
作成されたグループの確認
Note
[グループの種類] が [セキュリティ] であることを確認します。 Microsoft 365 グループは、Azure SQL ではサポートされていません。
作成されたグループを確認および管理するには、Azure portal の [グループ] ペインに戻り、対象のグループ名を検索します。 グループを選択したら、 [管理] 設定の [所有者] および [メンバー] メニューで追加の所有者とメンバーを追加できます。 また、グループの割り当てられたロールを確認することもできます。
Azure SQL マネージド ID をグループに追加する
Note
この例では SQL Managed Instance を使用していますが、SQL Database または Azure Synapse に同様の手順を適用して同じ結果を得ることができます。
以降の手順では、全体管理者または特権ロール管理者のユーザーは必要ありません。
SQL Managed Instance を管理し、前に作成したグループの所有者であるユーザーとして Azure portal にログインします。
Azure portal で、対象の SQL Managed Instance リソースの名前を見つけます。
SQL Managed Instance のプロビジョニング中に、インスタンス用に Microsoft Entra ID が作成され、Microsoft Entra アプリケーションとして登録されます。 ID は、対象の SQL Managed Instance 名のプレフィックスと同じ名前になります。 次の手順に従って、SQL Managed Instance の ID (サービス プリンシパルとも呼ばれる) を見つけることができます。
- Microsoft Entra ID のリソースに移動します。 [管理] 設定で、 [エンタープライズ アプリケーション] を選択します。 オブジェクト ID が、インスタンスの ID です。
Microsoft Entra ID のリソースに移動します。 [マネージド] で、 [グループ] に移動します。 自分が作成したグループを選択します。 対象のグループの [管理] 設定で、 [メンバー] を選択します。 [メンバーを追加] を選択し、上記で見つかった名前を検索して、対象の SQL Managed Instance のサービス プリンシパルをグループのメンバーとして追加します。
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 が用意されています。
次のコマンドを使用して、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
Microsoft Entra テナント に接続する
Connect-MgGraph
ディレクトリ閲覧者ロールを割り当てるセキュリティ グループを作成します。
DirectoryReaderGroup
、Directory Reader Group
、DirRead
は、好みに応じて変更できます。
$group = New-MgGroup -DisplayName "DirectoryReaderGroup" -Description "Directory Reader Group" -SecurityEnabled:$true -IsAssignableToRole:$true -MailEnabled:$false -MailNickname "DirRead" $group
ディレクトリ閲覧者ロールをグループに割り当てます。
# 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
所有者をグループに割り当てます。
<username>
を、このグループを所有するユーザーに置き換えます。 これらの手順を繰り返すことで、複数の所有者を追加できます。
$newGroupOwner = Get-MgUser -UserId "<username>" $newGroupOwner
$GrOwner = New-MgGroupOwnerByRef -GroupId $group.Id -DirectoryObjectId $newGroupOwner.Id
グループの所有者を確認します。
Get-MgGroupOwner -GroupId $group.Id
Azure portal でグループの所有者を確認することもできます。 「作成されたグループの確認」の手順に従います。
グループのメンバーとしてのサービス プリンシパルの割り当て
以降の手順では、全体管理者または特権ロール管理者のユーザーは必要ありません。
Azure SQL リソースも管理するグループのオーナーで次のコマンドを実行して、Microsoft Entra ID に接続します。
Connect-MgGraph
作成されたグループのメンバーとしてサービス プリンシパルを割り当てます。
<ServerName>
を 論理サーバーまたはマネージド インスタンスの名前で置き換えます。 詳細については、Azure SQL サービス ID のグループへの追加に関するセクションを参照してください
# 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)'"