Closed2

【CosmosDB】カスタムロールが表示されない件

waiwai

カスタムロールを作成したのにportal内で表示されず「???」となったのでその解決策をメモしていく

waiwai

ググってみたところ、CosmosDBのロール定義やロール割り当てを参照するために必要なActionが用意されていて、それが今のアカウントで有効化されていない模様。
https://learn.microsoft.com/ja-jp/azure/role-based-access-control/resource-provider-operations#microsoftdocumentdb



今回自分は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にクローズされました