5章 Cosmos DB にアクセスするための権限付与

  このページの動画解説をご視聴される場合は、こちらをご活用ください。

Cosmos DB にアクセスするための権限付与

Container Apps が Cosmos DB にアクセスするための権限付与が必要になります。

環境変数設定

# Azure リソースの作成時に作成されている [Azure Cosmos DB account] リソースの名前を設定
$env:AZURE_COSMOSDB_ACCOUNT = "xxx" 

$env:AZURE_COSMOSDB_RESOURCE_GROUP = "rg-${ENV:AZURE_ENV_NAME}"

# Container Apps の Managed Identity の Object ID を設定
$env:BACKEND_IDENTITY_PRINCIPAL_ID = "xxx"

用意したスクリプトを実行

# ハンズオンルートフォルダに移動
cd ~/$ENV:WD/aoai-handson-src/

# CosmosDB のカスタムトールを作成し、ロール ID を取得
$roleId = az cosmosdb sql role definition create --account-name $env:AZURE_COSMOSDB_ACCOUNT --resource-group $env:AZURE_COSMOSDB_RESOURCE_GROUP --body ./scripts/cosmosreadwriterole.json --output tsv --query id

# Cloud Shell タイムアウトの場合、再設定が必要のため、出力された値をメモします。
echo $roleId

# Container Apps から Cosmos DB にアクセスできるようにマネージド ID に権限を付与
az cosmosdb sql role assignment create --account-name $env:AZURE_COSMOSDB_ACCOUNT --resource-group $env:AZURE_COSMOSDB_RESOURCE_GROUP --scope / --principal-id $env:BACKEND_IDENTITY_PRINCIPAL_ID --role-definition-id $roleId

補足: 付与しない場合、後続の手順でデプロイするコンテナアプリが起動する際に以下の様なエラーが発生します。 Error: (Forbidden) Request blocked by Auth xxx : Request is blocked because principal [xxx] does not have required RBAC permissions to perform action

補足: BACKEND_IDENTITY_PRINCIPAL_ID の取得方法例: コンテナアプリ -> ID -> ユーザー割り当て済み -> マネージド ID のリンクをクリック -> マネージド ID リソースの「オブジェクト (プリンシパル) ID」 をコピーしてください。