1

次のコマンドを実行しています

$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 アクセス許可を提供しても役に立ちませんでした。

4

2 に答える 2