Closed2
【CosmosDB】カスタムロールが表示されない件
カスタムロールを作成したのにportal内で表示されず「???」となったのでその解決策をメモしていく
ググってみたところ、CosmosDBのロール定義やロール割り当てを参照するために必要なActionが用意されていて、それが今のアカウントで有効化されていない模様。
今回自分はSQL APIで利用しているが、Mongo DB APIを利用している場合は上記ActionのMongo版があるようなので要注意
(が、ロールの割り当てに関してはMongoDB用のActionがないっぽい。これに関しては別スクラップで要検証。)
よって、これらのActionが許可されているカスタムのロールを作成し、利用しているユーザーに割り当ててあげることが必要。
デプロイテンプレートの作成
自分はBicepを利用しているので、そのサンプルを添えておく。
カスタムロールの作成と、その割り当てを行なってくれるよう実装していく。
main.bicep
param principalId string
// 必要なActionたち
var actions = [
'Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/*'
'Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/*'
]
var roleDefinitionName = 'Example Role Name'
var roleDefinitionId = guid(subscription().id, 'example-role-definition')
var roleAssignmentId = guid(roleDefinitionId, principalId)
// 必要なActionの実行権限を持つカスタムロールを作成
resource roleDefinition 'Microsoft.Authorization/roleDefinitions@2022-04-01' = {
name: roleDefinitionId
properties: {
roleName: roleDefinitionName
description: 'example description'
type: 'customRole'
permissions: [
{
actions: actions
}
]
assignableScopes: [
resourceGroup().id
]
}
}
// 作成したカスタムロールをパラメータで指定したプリンシパルに割り当てる
resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: roleAssignmentId
properties: {
principalId: principalId
roleDefinitionId: roleDefinition.id
}
}
デプロイ
最後に、このBicepファイルでデプロイを実行する。同階層にmain.parameters.jsonという名前のパラメータファイルを配置しているとする。
az deployment group create -g <resource-group-name> --template-file main.bicep --parameters @main.parameters.json
以上の操作でポータル上にカスタムロールが表示されるようになった。
このスクラップは2023/06/16にクローズされました