Setelah membuat instance ApsaraDB for MongoDB, sistem secara otomatis membuat akun root di database admin. Izin yang diberikan kepada akun root bervariasi berdasarkan versi instance. Berikut adalah izin yang diberikan untuk versi instance yang berbeda:
Untuk instance yang menjalankan MongoDB 4.2 dan sebelumnya: akun root memiliki izin dari peran root bawaan di ApsaraDB for MongoDB.
Untuk instance yang menjalankan MongoDB 4.4 atau yang lebih baru, akun root memiliki izin dari peran alibabaCloudAdmin.
Penting Dalam beberapa skenario, jitter performa yang parah dapat terjadi saat menulis data ke database admin. Oleh karena itu, peran alibabaCloudAdmin tidak memiliki izin menulis pada database admin dan tidak dapat membuat akun dengan izin menulis pada database tersebut.
Anda dapat menjalankan perintah rolesInfo untuk melihat izin dari peran tertentu. Untuk informasi lebih lanjut tentang izin peran root dan perintah rolesInfo, lihat root dan rolesInfo.
Penting Untuk memastikan keamanan data, kami sarankan agar Anda tidak menggunakan akun root untuk mengelola database. Sebaiknya buat akun database dengan izin relevan sesuai kebutuhan bisnis Anda. Untuk informasi lebih lanjut, lihat Buat akun untuk instance ApsaraDB for MongoDB.
Anda dapat menjalankan perintah berikut untuk melihat izin akun root:
db.getSiblingDB("admin").runCommand({usersInfo: "root"});
Catatan Untuk informasi lebih lanjut tentang perintah usersInfo, lihat usersInfo.
Izin peran alibabaCloudAdmin
Peran ini diberikan izin (seperti membaca dan menulis koleksi, mengelola akun, dan memeriksa statistik) dari peran bawaan berikut: readWriteAnyDatabase, userAdminAnyDatabase, dbAdminAnyDatabase, clusterMonitor, backup, enableSharding, restore.
Catatan Peran alibabaCloudAdmin hanya memiliki izin baca pada database admin.
Perintah berikut didukung untuk instance kluster sharded: flushRouterConfig, cleanupOrphaned, runCommandOnShard, splitVector, clearJumboFlag, moveChunk, dan splitChunk.
Tanya Jawab Umum
Mengapa saya tidak dapat membuat pengguna atau peran istimewa seperti clusterAdmin, clusterManager, dan hostManager?
Peran alibabaCloudAdmin memiliki izin terbatas. Oleh karena itu, pengguna atau peran kustom tidak dapat diberikan izin yang melebihi ruang lingkup izin akun root saat Anda membuat pengguna atau peran tersebut.
Mengapa saya tidak dapat membuat pengguna atau peran yang memiliki izin readWrite, dbAdmin, atau dbOwner di database admin?
Peran alibabaCloudAdmin hanya memiliki izin baca pada database admin. Anda tidak dapat menggunakan peran ini untuk menulis data ke database. Namun, Anda dapat membuat pengguna atau peran dengan izin bawaan ini di database lain.
Bagaimana cara membuat pengguna yang memiliki izin baca/tulis pada semua koleksi kustom?
Anda dapat membuat akun dengan peran bawaan readWriteAnyDatabase, dbAdminAnyDatabase, atau userAdminAnyDatabase di database admin. Contoh perintah:
db.getSiblingDB("admin").createUser({user:"myName",pwd:"myPassword",roles:["readWriteAnyDatabase"]})
Peran clusterManager memiliki izin untuk menjalankan banyak perintah terkait O&M instance kluster sharded. Bagaimana cara menggunakan perintah ini jika saya tidak dapat membuat peran tersebut?
Secara default, akun root dengan izin peran alibabaCloudAdmin dapat menjalankan beberapa perintah terkait O&M instance kluster sharded. Anda dapat menggunakan akun root untuk menjalankan perintah ini.
Jika Anda ingin membuat akun kustom untuk menjalankan perintah O&M, gunakan metode berikut untuk membuat pengguna. Contoh berikut menunjukkan cara membuat pengguna yang mendukung perintah splitVector:
db.runCommand({createRole:'myRole',privileges:[{"resource":{"db":"","collection":""},"actions":['splitVector']}],roles:['readAnyDatabase']})
db.getSiblingDB("admin").createUser({user:"myUser",pwd:"myPassword",roles:["myRole"]})
Mengapa kesalahan menunjukkan bahwa akun baru saya tidak memiliki izin untuk melakukan operasi agregasi ketika saya menggunakan change streams di database admin?
Pastikan akun baru memiliki izin readAnyDatabase pada database lain, lalu berikan izin baca pada database admin ke akun tersebut.
Misalkan akun kustom adalah myUser. Anda dapat menjalankan perintah berikut untuk memberikan izin baca pada database admin ke akun kustom:
db.adminCommand({ grantRolesToUser: "myUser", roles: [{ role: "read", db: "admin"}]})
Izin bawaan xxxAnyDatabase dari ApsaraDB for MongoDB berbeda dari perilaku resmi. Izin bawaan ini tidak mencakup database config, local, dan admin. Oleh karena itu, Anda harus memberikan izin baca tambahan pada database admin.
Mengapa hasil yang dikembalikan menunjukkan bahwa peran tidak memiliki izin ketika saya menggunakan flink-sql-connector-mongodb-cdc untuk membuat peran berdasarkan contoh yang diberikan?
Aksi listDatabases berlaku untuk seluruh kluster dan harus dieksekusi di Cluster Resource. Anda dapat menjalankan perintah berikut untuk membuat peran kustom:
db.createRole(
{
role: "flinkrole",
privileges: [
{
resource: { db: "", collection: "" },
actions: [
"splitVector",
"listCollections",
"collStats",
"find",
"changeStream" ]
},
{
resource: { "cluster": true },
actions: [ "listDatabases" ]
}
],
roles: [
{ role: 'read', db: 'config' }
]
}
);
Jika kesalahan masih terjadi saat menggunakan layanan CDC setelah peran dan pengguna dibuat, submit a ticket untuk menghubungi dukungan teknis Alibaba Cloud.