Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
BERLAKU UNTUK: NoSQL
Artikel ini menjelaskan langkah-langkah untuk memberikan akses identitas untuk mengelola akun Azure Cosmos DB for NoSQL dan sumber dayanya.
Penting
Langkah-langkah dalam artikel ini hanya mencakup akses sarana kontrol untuk melakukan operasi pada akun itu sendiri dari sumber daya apa pun dalam hierarki akun. Untuk mempelajari cara mengelola item dan menjalankan kueri untuk bidang data, lihat memberikan akses berbasis peran bidang data.
Prasyarat
- Sebuah akun Azure dengan langganan aktif. Buat akun secara gratis.
- Akun Azure Cosmos DB yang sudah ada.
- Satu atau beberapa identitas yang sudah ada di ID Microsoft Entra.
Gunakan lingkungan Bash di Azure Cloud Shell. Untuk informasi selengkapnya, lihat Mulai menggunakan Azure Cloud Shell.
Jika Anda lebih suka menjalankan perintah referensi CLI secara lokal, instal Azure CLI. Jika Anda menjalankan Windows atau macOS, pertimbangkan untuk menjalankan Azure CLI dalam kontainer Docker. Untuk informasi lebih lanjut, lihat Cara menjalankan Azure CLI di kontainer Docker.
Jika Anda menggunakan instalasi lokal, masuk ke Azure CLI dengan menggunakan perintah az login. Untuk menyelesaikan proses autentikasi, ikuti langkah-langkah yang ditampilkan di terminal Anda. Untuk opsi masuk lainnya, lihat Mengautentikasi ke Azure menggunakan Azure CLI.
Saat diminta, instal ekstensi Azure CLI saat pertama kali digunakan. Untuk informasi selengkapnya tentang ekstensi, lihat Menggunakan dan mengelola ekstensi dengan Azure CLI.
Jalankan az version untuk menemukan versi dan pustaka dependen yang terinstal. Untuk meng-upgrade ke versi terbaru, jalankan az upgrade.
- Jika Anda memilih untuk menggunakan Azure PowerShell secara lokal:
- Pasang versi terbaru modul Az PowerShell.
- Sambungkan ke akun Azure Anda menggunakan cmdlet Connect-AzAccount.
- Jika Anda memilih untuk menggunakan Azure Cloud Shell:
- Lihat Gambaran Umum Azure Cloud Shell untuk informasi selengkapnya.
Menyiapkan definisi peran
Pertama, Anda harus menyiapkan definisi peran dengan daftar actions
untuk memberikan akses untuk mengelola sumber daya akun di Azure Cosmos DB.
Cantumkan semua definisi peran yang terkait dengan akun Azure Cosmos DB Anda menggunakan az role definition list
. Tinjau output dan temukan definisi peran bernama Operator Cosmos DB. Output berisi pengidentifikasi unik dari definisi peran pada properti id
. Rekam nilai ini karena diperlukan untuk digunakan dalam langkah penetapan nanti dalam panduan ini.
az role definition list \
--name "Cosmos DB Operator"
[
{
"assignableScopes": [
"/"
],
"description": "Lets you manage Azure Cosmos DB accounts, but not access data in them. Prevents access to account keys and connection strings.",
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Authorization/roleDefinitions/230815da-be43-4aae-9cb4-875f7bd000aa",
"name": "230815da-be43-4aae-9cb4-875f7bd000aa",
"permissions": [
{
"actions": [
"Microsoft.DocumentDb/databaseAccounts/*",
"Microsoft.Insights/alertRules/*",
"Microsoft.Authorization/*/read",
"Microsoft.ResourceHealth/availabilityStatuses/read",
"Microsoft.Resources/deployments/*",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Support/*",
"Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action"
],
"condition": null,
"conditionVersion": null,
"dataActions": [],
"notActions": [
"Microsoft.DocumentDB/databaseAccounts/dataTransferJobs/*",
"Microsoft.DocumentDB/databaseAccounts/readonlyKeys/*",
"Microsoft.DocumentDB/databaseAccounts/regenerateKey/*",
"Microsoft.DocumentDB/databaseAccounts/listKeys/*",
"Microsoft.DocumentDB/databaseAccounts/listConnectionStrings/*",
"Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/write",
"Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/delete",
"Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/write",
"Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/delete",
"Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/write",
"Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/delete",
"Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write",
"Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/delete"
],
"notDataActions": []
}
],
"roleName": "Cosmos DB Operator",
"roleType": "BuiltInRole",
"type": "Microsoft.Authorization/roleDefinitions",
}
]
Nota
Dalam contoh ini, nilai id
akan menjadi /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Authorization/roleDefinitions/230815da-be43-4aae-9cb4-875f7bd000aa
. Contoh ini menggunakan data fiktif dan pengidentifikasi Anda akan berbeda dari contoh ini. Namun, pengidentifikasi (230815da-be43-4aae-9cb4-875f7bd000aa
) unik secara global di semua definisi peran di Azure.
Masuk ke portal Azure (https://portal.azure.com).
Masukkan Grup sumber daya di bilah pencarian global.
Dalam Layanan, pilih Grup sumber daya.
Di panel Grup sumber daya, pilih grup sumber daya yang sudah ada.
Nota
Contoh tangkapan layar ini mencakup grup sumber daya. Nama grup sumber daya Anda yang sebenarnya mungkin berbeda.
Di dalam panel untuk grup sumber daya, pilih Kontrol akses (IAM) di menu layanan.
Di panel Kontrol akses (IAM), pilih Peran.
Di bagian Peran , gunakan frasa pencarian Cosmos DB dan temukan definisi peran Operator Cosmos DB. Kemudian, pilih opsi Tampilan yang terkait dengan definisi tersebut.
Dalam dialog definisi peran Operator Cosmos DB, amati tindakan yang ditetapkan sebagai bagian dari definisi peran ini.
Tutup dialog definisi peran Cosmos DB Operator.
Gunakan Get-AzRoleDefinition
untuk mencantumkan semua definisi peran yang terkait dengan akun Azure Cosmos DB Anda. Tinjau output dan temukan definisi peran bernama Cosmos DB Built-in Data Contributor. Output berisi pengidentifikasi unik dari definisi peran pada properti Id
. Rekam nilai ini karena diperlukan untuk digunakan dalam langkah penetapan nanti dalam panduan ini.
$parameters = @{
Name = "Cosmos DB Operator"
}
Get-AzRoleDefinition @parameters
Name : Cosmos DB Operator
Id : 230815da-be43-4aae-9cb4-875f7bd000aa
IsCustom : False
Description : Lets you manage Azure Cosmos DB accounts, but not access data in them. Prevents access to account keys and connection strings.
Actions : {Microsoft.DocumentDb/databaseAccounts/*, Microsoft.Insights/alertRules/*, Microsoft.Authorization/*/read, Microsoft.ResourceHealth/availabilityStatuses/read…}
NotActions : {Microsoft.DocumentDB/databaseAccounts/dataTransferJobs/*, Microsoft.DocumentDB/databaseAccounts/readonlyKeys/*, Microsoft.DocumentDB/databaseAccounts/regenerateKey/*, Microsoft.DocumentDB/databaseAccounts/listKeys/*…}
DataActions : {}
NotDataActions : {}
AssignableScopes : {/}
Nota
Dalam contoh ini, nilai Id
akan menjadi 230815da-be43-4aae-9cb4-875f7bd000aa
. Pengidentifikasi ini unik di seluruh dunia dalam semua definisi peran di Azure.
Menetapkan peran pada identitas
Sekarang, tetapkan peran yang baru ditentukan ke identitas sehingga aplikasi Anda dapat mengakses sumber daya di Azure Cosmos DB.
Penting
Tugas penugasan ini mengharuskan Anda untuk sudah memiliki pengidentifikasi unik identitas apa pun yang ingin Anda berikan izin kontrol akses berbasis peran.
Gunakan
az group show
untuk mendapatkan metadata untuk grup sumber daya Anda saat ini lagi.az group show \ --name "<name-of-existing-resource-group>"
Amati output perintah sebelumnya. Catat nilai
id
properti untuk grup sumber daya ini karena diperlukan untuk digunakan pada langkah berikutnya.{ "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example", "location": "westus", "name": "msdocs-identity-example", "type": "Microsoft.Resources/resourceGroups" }
Nota
Dalam contoh ini, nilai
id
akan menjadi/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example
. Contoh ini menggunakan data fiktif dan pengidentifikasi Anda akan berbeda dari contoh ini. Ini adalah contoh terpotong dari hasil keluaran.Tetapkan peran baru menggunakan
az role assignment create
. Gunakan pengidentifikasi grup sumber daya Anda untuk--scope
argumen, pengidentifikasi peran untuk-role
argumen, dan pengidentifikasi unik untuk identitas Anda untuk--assignee
argumen.az role assignment create \ --assignee "<your-principal-identifier>" \ --role "subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleDefinitions/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0" \ --scope "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example"
Nota
Dalam perintah contoh ini,
scope
diatur ke contoh/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example
fiktif dari contoh langkah sebelumnya. Pengidentifikasi grup sumber daya Anda akan berbeda dari contoh ini. Iturole
juga disetel ke/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleDefinitions/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0
yang fiktif. Seperti biasanya, identitas peran Anda akan berbeda.Amati output dari perintah . Keluaran mencakup identifikasi unik untuk penugasan pada properti
id
.{ "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleAssignments/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0", "name": "ffffffff-5555-6666-7777-aaaaaaaaaaaa", "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222", "resourceGroup": "msdocs-identity-example", "roleDefinitionId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleDefinitions/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0", "scope": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example", "type": "Microsoft.Authorization/roleAssignments" }
Nota
Dalam contoh ini, properti
id
adalah/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleAssignments/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0
, yang merupakan contoh fiktif lain.Ulangi langkah-langkah ini untuk memberikan akses ke akun dari identitas lain yang ingin Anda gunakan.
Petunjuk / Saran
Anda dapat mengulangi langkah-langkah ini untuk identitas sebanyak yang Anda inginkan. Biasanya, langkah-langkah ini setidaknya diulang untuk memungkinkan pengembang mengakses akun menggunakan identitas manusia mereka dan untuk memungkinkan aplikasi mengakses menggunakan identitas terkelola.
Buat file Bicep baru untuk mengatur peran Anda. Beri nama file control-plane-role-assignment.bicep.
metadata description = 'Assign RBAC role for control plane access to Azure Cosmos DB.' @description('Id of the role definition to assign to the targeted principal in the context of the account.') param roleDefinitionId string @description('Id of the identity/principal to assign this role in the context of the account.') param identityId string resource assignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = { name: guid(subscription().id, resourceGroup().id, roleDefinitionId, identityId) scope: resourceGroup() properties: { roleDefinitionId: roleDefinitionId principalId: identityId } }
Buat file parameter Bicep yang baru bernama control-plane-role-assignment.
bicepparam
. Dalam file parameter ini; tetapkan pengidentifikasi definisi peran yang direkam sebelumnya keroleDefinitionId
parameter , dan pengidentifikasi unik untuk identitas Anda keidentityId
parameter .using './control-plane-role-assignment.bicep' param roleDefinitionId = '<id-of-new-role-definition>' param identityId = '<id-of-existing-identity>'
Sebarkan templat Bicep ini menggunakan
az deployment group create
.az deployment group create \ --resource-group "<name-of-existing-resource-group>" \ --parameters control-plane-role-assignment.bicepparam \ --template-file control-plane-role-assignment.bicep
Ulangi langkah-langkah ini untuk memberikan akses ke akun dari identitas lain yang ingin Anda gunakan.
Petunjuk / Saran
Anda dapat mengulangi langkah-langkah ini untuk identitas sebanyak yang Anda inginkan. Biasanya, langkah-langkah ini setidaknya diulang untuk memungkinkan pengembang mengakses akun menggunakan identitas manusia mereka dan untuk memungkinkan aplikasi mengakses menggunakan identitas terkelola.
Di panel Kontrol akses (IAM), pilih Tambahkan lalu Tambahkan penetapan peran.
Di panel Peran , cari
Azure Cosmos DB
lalu pilih peran Pemilik Sarana Kontrol Azure Cosmos DB yang dibuat sebelumnya dalam panduan ini. Kemudian, pilih Berikutnya.Petunjuk / Saran
Anda dapat secara opsional memfilter daftar peran untuk hanya menyertakan peran kustom.
Di panel Anggota , pilih opsi Pilih anggota . Dalam dialog anggota, pilih identitas yang ingin Anda berikan tingkat akses ini untuk akun Azure Cosmos DB Anda lalu gunakan opsi Pilih untuk mengonfirmasi pilihan Anda.
Nota
Cuplikan layar ini menggambarkan contoh pengguna bernama "Kai Carter" dengan prinsipal
kai@adventure-works.com
.Kembali ke panel Anggota , tinjau anggota yang dipilih lalu pilih Tinjau + tetapkan.
Di panel Tinjau + tetapkan , tinjau opsi yang ditentukan untuk penetapan peran baru. Terakhir, pilih Tinjau + tetapkan.
Tunggu hingga portal selesai membuat penetapan peran.
Tetapkan peran baru menggunakan
New-AzRoleAssignment
. Gunakan nama peran untuk parameterRoleDefinitionName
dan pengidentifikasi unik untuk identitas Anda pada parameterObjectId
.$parameters = @{ ResourceGroupName = "<name-of-existing-resource-group>" ObjectId = "<your-principal-identifier>" RoleDefinitionName = "Azure Cosmos DB Control Plane Owner" } New-AzRoleAssignment @parameters
Amati output dari perintah . Output mencakup pengidentifikasi unik untuk penugasan di properti
RoleAssignmentId
.RoleAssignmentName : ffffffff-5555-6666-7777-aaaaaaaaaaaa RoleAssignmentId : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleAssignments/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0 Scope : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example DisplayName : Kai Carter SignInName : <kai@adventure-works.com> RoleDefinitionName : Azure Cosmos DB Control Plane Owner RoleDefinitionId : e4e4e4e4-ffff-aaaa-bbbb-c5c5c5c5c5c5
Nota
Dalam contoh ini, properti
RoleAssignmentId
adalah/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleAssignments/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0
contoh fiktif lainnya. Ini adalah subset dari hasil keluaran khas penyebaran untuk kejelasan.Ulangi langkah-langkah ini untuk memberikan akses ke akun dari identitas lain yang ingin Anda gunakan.
Petunjuk / Saran
Anda dapat mengulangi langkah-langkah ini untuk identitas sebanyak yang Anda inginkan. Biasanya, langkah-langkah ini setidaknya diulang untuk memungkinkan pengembang mengakses akun menggunakan identitas manusia mereka dan untuk memungkinkan aplikasi mengakses menggunakan identitas terkelola.
Memvalidasi akses lapisan kontrol dalam kode
Terakhir, validasi bahwa Anda memberikan akses dengan benar menggunakan kode aplikasi dan Azure Management SDK dalam bahasa pemrograman pilihan Anda.
using Azure.Identity;
using Azure.ResourceManager;
DefaultAzureCredential credential = new();
ArmClient client = new(credential);
Penting
Sampel kode ini menggunakan pustaka Azure.ResourceManager.CosmosDB
dan Azure.Identity
dari NuGet.