Resource Access Management (RAM) memungkinkan Anda mengontrol akses ke resource ApsaraMQ for MQTT tanpa perlu membagikan pasangan AccessKey akun Alibaba Cloud kepada pengguna lain. Pasangan AccessKey terdiri dari ID AccessKey dan Rahasia AccessKey. Anda dapat membuat pengguna RAM dan memberikan masing-masing pengguna hanya izin yang diperlukan.
Cara kerja kontrol akses
ApsaraMQ for MQTT mengotorisasi akses melalui kebijakan RAM. Setiap kebijakan menentukan aksi yang dapat dilakukan oleh pengguna RAM pada resource tertentu. Terdapat empat jenis resource:
| Jenis resource | Deskripsi | Format penamaan | Contoh |
|---|---|---|---|
| Instance | Instans broker MQTT | acs:mq:*:*:instance/{mqttInstanceId} | acs:mq:*:*:instance/post-cn-09k1noy**** |
| Topic | Topik pesan dalam suatu instans | acs:mq:*:*:topic/{mqttInstanceId}/{topic} | acs:mq:*:*:topic/post-cn-09k1noy**/Topic_** |
| Group | Grup klien dalam suatu instans | acs:mq:*:*:groupId/{mqttInstanceId}/{gid} | acs:mq:*:*:groupId/post-cn-09k1noy**/GID_** |
| Rule | Aturan routing data dalam suatu instans | acs:mq:*:*:rule/{mqttInstanceId}/{ruleId} | acs:mq:*:*:rule/post-cn-09k1noy**/111** |
Terdapat dua jenis kebijakan:
Kebijakan sistem — Ditetapkan sebelumnya oleh Alibaba Cloud, siap digunakan, tetapi tidak dapat diedit.
Kebijakan kustom — Didefinisikan dan dikelola oleh Anda. Anda mengelola versi kebijakan tersebut dan dapat memberikan kontrol akses detail halus berbasis resource.
Untuk informasi lebih lanjut mengenai sintaksis kebijakan, lihat Struktur dan sintaksis kebijakan. Untuk format elemen resource, lihat Resource.
Prasyarat akses instance
Sebelum memberikan izin pada topik, grup, atau aturan apa pun, Anda harus terlebih dahulu memberikan aksi mq:MqttInstanceAccess pada instance induknya. Tanpa akses tingkat instance, pengguna RAM tidak dapat mengakses resource di dalam instance tersebut.
Prasyarat ini berlaku untuk semua kategori izin: operasi konsol, panggilan API, serta publikasi/langganan klien.
Kebijakan sistem
ApsaraMQ for MQTT menyediakan empat kebijakan sistem bawaan.
| Kebijakan | Deskripsi |
|---|---|
| AliyunMQFullAccess | Akses manajemen penuh ke semua operasi ApsaraMQ for MQTT di konsol, setara dengan akun Alibaba Cloud. |
| AliyunMQPubOnlyAccess | Akses hanya untuk publikasi. Memungkinkan publikasi pesan melalui SDK ke semua resource di bawah akun Alibaba Cloud. |
| AliyunMQSubOnlyAccess | Akses hanya untuk berlangganan. Memungkinkan berlangganan pesan melalui SDK dari semua resource di bawah akun Alibaba Cloud. |
| AliyunMQReadOnlyAccess | Akses hanya-baca. Memungkinkan melihat informasi resource di konsol atau melalui panggilan API. |
ApsaraMQ for MQTT tidak memiliki kebijakan sistem independen tersendiri. Kebijakan ini dibagikan dengan ApsaraMQ for RocketMQ — menautkan salah satu kebijakan ini ke pengguna RAM akan memberikan akses ke kedua layanan tersebut.
AliyunMQFullAccess dan AliyunMQReadOnlyAccess tidak mencakup izin untuk melihat daftar instance di konsol. Berikan mq:MqttInstanceAccess secara terpisah untuk mengaktifkan akses ke daftar instance. Lihat Aksi manajemen instance.Aksi kebijakan kustom
Kebijakan kustom memungkinkan Anda menentukan secara tepat aksi yang dapat dilakukan pengguna RAM pada resource tertentu. Bagian-bagian berikut mencantumkan semua aksi yang tersedia, dikelompokkan berdasarkan cakupannya.
Untuk contoh kebijakan kustom, lihat Contoh kebijakan izin.
Aksi publikasi dan langganan klien
Aksi-aksi ini mengontrol publikasi dan langganan pesan melalui SDK ApsaraMQ for MQTT.
Format penamaan resource:
Topic:
acs:mq:*:*:topic/{mqttInstanceId}/{topic}Group ID:
acs:mq:*:*:groupId/{mqttInstanceId}/{gid}
| Aksi | Deskripsi |
|---|---|
| mq:PUB | Menerbitkan pesan ke topik |
| mq:SUB | Berlangganan pesan dari topik |
Izin publikasi dan langganan klien tidak dapat diberikan lintas akun Alibaba Cloud.
Aksi manajemen instance
Format penamaan resource: acs:mq:*:*:instance/{mqttInstanceId}
| Aksi | Deskripsi |
|---|---|
| mq:MqttInstanceAccess | Menanyakan informasi dasar instance. Diperlukan sebelum memberikan izin topik, grup, atau aturan apa pun. |
| mq:ListMqttInstance | Menampilkan daftar semua instance |
| mq:UpdateMqttInstance | Memodifikasi informasi instance |
| mq:DeleteMqttInstance | Menghapus instance |
| mq:UpdateMqttInstanceWarn | Memperbarui pengaturan peringatan untuk instance |
| mq:MqttMetaData | Mengakses halaman Ikhtisar dan beranda di konsol ApsaraMQ for MQTT |
Setelah memberikanmq:MqttMetaData, berikan jugamq:ListMqttInstanceagar pengguna RAM dapat melihat daftar instance di konsol.
Aksi manajemen topik
Format penamaan resource: acs:mq:*:*:topic/{mqttInstanceId}/{topic}
| Aksi | Deskripsi |
|---|---|
| mq:CreateMqttTopic | Membuat topik |
| mq:DeleteMqttTopic | Menghapus topik |
| mq:ListMqttTopic | Menampilkan daftar topik |
| mq:UpdateMqttTopic | Memperbarui deskripsi topik |
| mq:QueryMqttClientByTopic | Menanyakan klien mana yang berlangganan ke topik |
| mq:QueryMqttMsgTransTrend | Menanyakan statistik pengiriman pesan untuk topik |
| mq:SendMqttMessageByConsole | Mengirim pesan uji dari konsol |
Aksi manajemen grup
Format penamaan resource: acs:mq:*:*:groupId/{mqttInstanceId}/{gid}
| Aksi | Deskripsi |
|---|---|
| mq:CreateMqttGroupId | Membuat grup |
| mq:DeleteMqttGroupId | Menghapus grup |
| mq:ListMqttGroupId | Menampilkan daftar grup |
| mq:QueryMqttClientByClientId | Menanyakan informasi klien berdasarkan ID klien |
| mq:QueryMqttClientByGroupId | Menanyakan informasi klien berdasarkan ID grup |
| mq:QueryMqttHistoryOnline | Menanyakan riwayat koneksi online berdasarkan ID grup |
| mq:QueryMqttTraceDevice | Melacak klien tertentu |
| mq:QueryMqttDeviceTrace | Menanyakan detail klien tertentu |
Aksi manajemen aturan
Format penamaan resource: acs:mq:*:*:rule/{mqttInstanceId}/{ruleId}
Saat memberikan izin aturan, pastikan instance, topik, dan grup terkait semuanya berada dalam akun Alibaba Cloud yang sama.
| Aksi | Deskripsi |
|---|---|
| mq:CreateMqttInboundRule | Membuat aturan inbound data |
| mq:DeleteMqttInboundRule | Menghapus aturan inbound data |
| mq:ListMqttInboundRule | Menampilkan daftar aturan inbound data |
| mq:UpdateMqttInboundRule | Memperbarui aturan inbound data |
| mq:CreateMqttOutboundRule | Membuat aturan outbound data |
| mq:DeleteMqttOutboundRule | Menghapus aturan outbound data |
| mq:ListMqttOutboundRule | Menampilkan daftar aturan outbound data |
| mq:UpdateMqttOutboundRule | Memperbarui aturan outbound data |
| mq:CreateClientStatusNotifyRule | Membuat aturan notifikasi status klien |
| mq:DeleteClientStatusNotifyRule | Menghapus aturan notifikasi status klien |
| mq:ListClientStatusNotifyRule | Menampilkan daftar aturan notifikasi status klien |
| mq:UpdateClientStatusNotifyRule | Memperbarui aturan notifikasi status klien |
Izin operasi API
Setiap operasi API memerlukan mq:MqttInstanceAccess ditambah satu atau beberapa aksi tambahan. Untuk API terkait aturan, pastikan instance, topik, dan grup terkait semuanya berada dalam akun Alibaba Cloud yang sama.
Manajemen token
| API | Format penamaan resource | Aksi yang diperlukan |
|---|---|---|
| ApplyToken | Instance: acs:mq:*:*:instance/{mqttInstanceId}, Topic: acs:mq:*:*:topic/{mqttInstanceId}/{topic} | mq:MqttInstanceAccess, mq:ApplyToken |
| RevokeToken | acs:mq:*:*:* | mq:MqttInstanceAccess, mq:RevokeToken |
| QueryToken | acs:mq:*:*:* | mq:MqttInstanceAccess, mq:QueryToken |
Operasi pesan
| API | Aksi yang diperlukan |
|---|---|
| SendMessage | mq:MqttInstanceAccess, mq:SendMessage |
Operasi grup
Semua operasi API grup menggunakan format penamaan resource berikut:
Instance:
acs:mq:*:*:instance/{mqttInstanceId}Grup:
acs:mq:*:*:groupId/{mqttInstanceId}/{gid}
| API | Aksi yang diperlukan |
|---|---|
| CreateGroupId | mq:MqttInstanceAccess, mq:CreateMqttGroupId |
| DeleteGroupId | mq:MqttInstanceAccess, mq:DeleteMqttGroupId |
| ListGroupId | mq:MqttInstanceAccess, mq:ListMqttGroupId |
| QuerySessionByClientId | mq:MqttInstanceAccess, mq:QuerySessionByClientId |
| BatchQuerySessionByClientIds | mq:MqttInstanceAccess, mq:BatchQuerySessionByClientIds |
Operasi kredensial perangkat
| API | Aksi yang diperlukan |
|---|---|
| RegisterDeviceCredential | mq:MqttInstanceAccess, mq:RegisterDeviceCredential |
| GetDeviceCredential | mq:MqttInstanceAccess, mq:GetDeviceCredential |
| ListDeviceCredentialClientId | mq:MqttInstanceAccess, mq:ListDeviceCredentialClientId |
| UnRegisterDeviceCredential | mq:MqttInstanceAccess, mq:UnRegisterDeviceCredential |
| RefreshDeviceCredential | mq:MqttInstanceAccess, mq:RefreshDeviceCredential |
Operasi pelacakan pesan
| API | Format penamaan resource | Aksi yang diperlukan |
|---|---|---|
| QueryMqttTraceDevice | -- | mq:MqttInstanceAccess, mq:QueryMqttDeviceTrace |
| QueryMqttTraceMessageOfClient | -- | mq:MqttInstanceAccess, mq:QueryMqttDeviceTrace |
| QueryMqttTraceMessagePublish | Instance: acs:mq:*:*:instance/{mqttInstanceId} | mq:MqttInstanceAccess, mq:QueryMqttPubTrace |
| QueryMqttTraceMessageSubscribe | -- | mq:MqttInstanceAccess, mq:QueryMqttSubTrace |
Operasi autentikasi kustom
| API | Aksi yang diperlukan |
|---|---|
| AddCustomAuthIdentity | mq:MqttInstanceAccess, mq:AddCustomAuthIdentity |
| QueryCustomAuthIdentity | mq:MqttInstanceAccess, mq:QueryCustomAuthIdentity |
| UpdateCustomAuthIdentity | mq:MqttInstanceAccess, mq:UpdateCustomAuthIdentity |
| DeleteCustomAuthIdentity | mq:MqttInstanceAccess, mq:DeleteCustomAuthIdentity |
| AddCustomAuthPermission | mq:MqttInstanceAccess, mq:AddCustomAuthPermission |
| QueryCustomAuthPermission | mq:MqttInstanceAccess, mq:QueryCustomAuthPermission |
| UpdateCustomAuthPermission | mq:MqttInstanceAccess, mq:UpdateCustomAuthPermission |
| DeleteCustomAuthPermission | mq:MqttInstanceAccess, mq:DeleteCustomAuthPermission |
| AddCustomAuthConnectBlack | mq:MqttInstanceAccess, mq:DeleteCustomAuthConnectBlack |
| QueryCustomAuthConnectBlack | mq:MqttInstanceAccess, mq:QueryCustomAuthConnectBlack |
| DeleteCustomAuthConnectBlack | mq:MqttInstanceAccess, mq:AddCustomAuthConnectBlack |
Operasi topik
Semua operasi API topik menggunakan format penamaan resource berikut:
Instance:
acs:mq:*:*:instance/{mqttInstanceId}Topic:
acs:mq:*:*:topic/{mqttInstanceId}/{topic}
| API | Aksi yang diperlukan |
|---|---|
| CreateTopic | mq:MqttInstanceAccess, mq:CreateMqttTopic |
| ListTopics | mq:MqttInstanceAccess, mq:SUB, mq:ListMqttTopic |
| DeleteTopic | mq:MqttInstanceAccess, mq:PUB, mq:DeleteMqttTopic |
| UpdateTopic | mq:MqttInstanceAccess, mq:UpdateMqttTopic |
Operasi aturan
Semua operasi API aturan menggunakan format penamaan resource berikut:
Instance:
acs:mq:*:*:instance/{mqttInstanceId}Aturan:
acs:mq:*:*:rule/{mqttInstanceId}/{ruleId}
| API | Aksi yang diperlukan |
|---|---|
| CreateMqttInboundRule | mq:MqttInstanceAccess, mq:CreateMqttInboundRule |
| ListMqttInboundRuleInPages | mq:MqttInstanceAccess, mq:ListMqttInboundRule |
| UpdateMqttInboundRule | mq:MqttInstanceAccess, mq:UpdateMqttInboundRule |
| DeleteMqttInboundRule | mq:MqttInstanceAccess, mq:DeleteMqttInboundRule |
| CreateMqttOutboundRule | mq:MqttInstanceAccess, mq:CreateMqttOutboundRule |
| ListMqttOutboundRuleInPages | mq:MqttInstanceAccess, mq:ListMqttOutboundRule |
| UpdateMqttOutboundRule | mq:MqttInstanceAccess, mq:UpdateMqttOutboundRule |
| DeleteMqttOutboundRule | mq:MqttInstanceAccess, mq:DeleteMqttOutboundRule |
| CreateClientStatusNotifyRule | mq:MqttInstanceAccess, mq:CreateClientStatusNotifyRule |
| ListClientStatusNotifyRuleInPages | mq:MqttInstanceAccess, mq:ListClientStatusNotifyRule |
| UpdateClientStatusNotifyRule | mq:MqttInstanceAccess, mq:UpdateClientStatusNotifyRule |
| DeleteClientStatusNotifyRule | mq:MqttInstanceAccess, mq:DeleteClientStatusNotifyRule |
Operasi pemulihan bencana
| API | Aksi yang diperlukan |
|---|---|
| DisasterDowngrade | mq:MqttInstanceAccess, mq:DisasterDowngrade |
| DisasterRecovery | mq:MqttInstanceAccess, mq:DisasterRecovery |
Untuk referensi API lengkap, lihat Daftar operasi berdasarkan fungsi.