🐐
ユーザ割り当てマネージドIDに CosmosDB の組み込みのロールを割り当てる
概要
組み込みのロールを割り当てるのは、ポータルからはできない(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