次のコマンドを実行しています
$sp = az ad sp show --id $env:ARM_CLIENT_ID --query '{objectId: objectId, displayName: displayName}'
az sql server ad-admin create --resource-group data-eastus2 `
--server-name data-eastus2-sqlsvr `
--display-name $sp.name `
--object-id $sp.id
これは、サービス プリンシパルに Graph API のアクセス許可を提供しなくても、完全に正常に機能します。次のコマンドを実行して、Az Powershell モジュールを使用してこの機能を模倣しようとしています。
Set-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName 'data-eastus2' -ServerName 'data-eastus2-sqlsvr' -DisplayName $sp.name -ObjectId $sp.id
例外が発生します
Set-AzSqlServerActiveDirectoryAdministrator : Azure Active Directory オブジェクト 'service_principal_name' が見つかりません。承認するユーザーまたはグループが、現在のサブスクリプションの Azure Active Directory に登録されていることを確認してください。Azure Active Directory グループのリストを取得するには Get-AzADGroup を使用するか、Azure Active Directory ユーザーのリストを取得するには Get-AzADUser を使用します。行:1 文字:1 + Set-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName 'data ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : CloseError: (:) [Set-AzSqlServer] ...ryAdministrator]、ArgumentException + FullyQualifiedErrorId : Microsoft.Azure.Commands.Sql.ServerActiveDirectoryAdministrator.Cmdlet.SetAzureSqlServerActiveDirectoryAdministrator
Azure Active Directory Graph - Directory.Read.All および Microsoft Graph - Directory.Read.All API アクセス許可を提供しても役に立ちませんでした。