🐐

ユーザ割り当てマネージドIDに CosmosDB の組み込みのロールを割り当てる

2024/08/21に公開

概要

https://learn.microsoft.com/ja-jp/azure/cosmos-db/how-to-setup-rbac

組み込みのロールを割り当てるのは、ポータルからはできない(Azureのロールではない)ので、PowerShell か Azure CLI でコマンドを実行する必要があります。

準備するもの

ユーザ割り当てマネージドIDはすでに作成済みとします。

CosmosDB に用意されている組み込みのロール定義

2種類の組み込みのロールが定義されています。
ReadとReadWriteですね。IDを使用します。

ID 名前 含まれるアクション
00000000-0000-0000-0000-000000000001 Cosmos DB 組み込みデータ リーダー Microsoft.DocumentDB/databaseAccounts/readMetadata
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed
00000000-0000-0000-0000-000000000002 Cosmos DB 組み込みデータ共同作成者 Microsoft.DocumentDB/databaseAccounts/readMetadata
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*

ユーザ割り当てマネージドID のオブジェクト(プリンシパル)IDを確認する

ユーザ割り当てマネージドIDの概要にオブジェクト(プリンシパル)IDがあるので、コピーしておきます。

もしくは、Azure CLI で調べます。

$ az identity show --resource-group $resourceGroupName --name '<ユーザ割り当てマネージドIDの名前>'

構文

AzureCLI
resourceGroupName='<myResourceGroup>'
accountName='<myCosmosAccount>'
# readOnlyRoleDefinitionId となっているので、writeのときは変える
readOnlyRoleDefinitionId='<roleDefinitionId>' # as fetched above
# For Service Principals make sure to use the Object ID as found in the Enterprise applications section of the Azure Active Directory portal blade.
principalId='<aadPrincipalId>'
az cosmosdb sql role assignment create --account-name $accountName --resource-group $resourceGroupName --scope "/" --principal-id $principalId --role-definition-id $readOnlyRoleDefinitionId
変数名 設定する値
myResourceGroup リソースグループ名
myCosmosAccount CosmosDB の名前
roleDefinitionId 組み込みのロール のID
aadPrincipalId ユーザ割り当てマネージドID の オブジェクト(プリンシパル)ID

おわりに

ユーザ割り当てマネージドIDにロールを割り当てたので、それぞれリソースにIDを付与すれば、そのロールに基づいたアクセスができそうです。

Discussion