Tablestore menggunakan kebijakan otorisasi berformat JSON untuk kontrol akses detail halus terhadap resource. Kebijakan ini mendefinisikan elemen Action, Resource, dan Condition, serta berlaku untuk kebijakan instans, kebijakan RAM, dan kebijakan kontrol.
Sintaksis otorisasi
Kebijakan otorisasi ditulis dalam format JSON dan terdiri atas nomor versi (Version) serta satu atau beberapa pernyataan otorisasi (Statement). Setiap pernyataan mencakup elemen dasar Effect, Action, Resource, dan Condition.
Struktur sintaksis
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": ["ots:ActionName"],
"Resource": ["acs:ots:region:account-id:instance-and-resource-path"],
"Condition": {
"ConditionOperator": {
"ConditionKey": ["ConditionValue"]
}
}
}
]
}
Deskripsi field
|
Field |
Deskripsi |
Wajib |
|
Version |
Nomor versi kebijakan otorisasi. Nilainya tetap |
Ya |
|
Statement |
Isi utama otorisasi. Anda dapat mengonfigurasi satu atau beberapa pernyataan. |
Ya |
|
Effect |
Efek otorisasi. Nilai yang valid: |
Ya |
|
Action |
Operasi yang diizinkan atau ditolak. Untuk informasi selengkapnya, lihat Action. |
Ya |
|
Resource |
Resource yang diberi otorisasi. Untuk informasi selengkapnya, lihat Resource. |
Ya |
|
Condition |
Kondisi yang harus dipenuhi agar otorisasi berlaku. Untuk informasi selengkapnya, lihat Condition. |
Tidak |
Action
Action menentukan operasi yang dapat dilakukan pada suatu resource. Setiap action harus diawali dengan ots:, dan beberapa action dipisahkan dengan koma (,). Action mendukung karakter wildcard asterisk (*) untuk pencocokan awalan maupun akhiran. Berikut adalah definisi action umum:
Operasi API tunggal
"Action": "ots:GetRow"
Beberapa operasi API
"Action": [
"ots:PutRow",
"ots:GetRow"
]
Semua operasi API read-only
"Action": [
"ots:BatchGet*",
"ots:Describe*",
"ots:Get*",
"ots:List*",
"ots:Consume*",
"ots:Search",
"ots:ComputeSplitPointsBySize"
]
Semua operasi API baca dan tulis
"Action": "ots:*"
Semua operasi API SQL
"Action": "ots:SQL*"
Resource
Resource terdiri atas field seperti produk, wilayah, ID akun, nama instans, dan nama tabel. Resource menentukan cakupan resource yang dapat diakses. Setiap field mendukung karakter wildcard asterisk (*) untuk pencocokan awalan maupun akhiran. Format Resource adalah sebagai berikut:
acs:ots:[region]:[user_id]:instance/[instance_name]/table/[table_name]
Produk tetap menggunakan ots. [region] adalah ID wilayah tempat resource berada (misalnya, cn-hangzhou). [user_id] adalah ID akun Alibaba Cloud. [instance_name] adalah nama instans. [table_name] adalah nama tabel. Ganti nilai-nilai tersebut dengan nilai aktual resource Anda.
Untuk Tunnel, definisi Resource hanya dapat ditentukan pada tingkat instans, yang terdiri dari produk, wilayah, ID akun, dan nama instans. Format Resource adalah sebagai berikut:
acs:ots:[region]:[user_id]:instance/[instance_name]
Catatan penggunaan
Nama instans di Tablestore tidak membedakan huruf besar/kecil. Tentukan
[instance_name]dalam huruf kecil pada definisi Resource.Action dan Resource diverifikasi melalui pencocokan string, dan karakter wildcard asterisk (
*) membedakan antara pencocokan awalan dan akhiran. Misalnya, definisi Resourceacs:ots:*:*:instance/abctidak cocok denganacs:ots:*:*:instance/abc/table/xyz.Untuk mengelola resource instans di konsol Tablestore, konsol harus mendapatkan daftar instans. Oleh karena itu, berikan izin baca kepada pengguna pada resource
acs:ots:[region]:[user_id]:instance/*.Untuk operasi API batch (seperti BatchGetRow dan BatchWriteRow), Tablestore memberikan otorisasi secara terpisah untuk setiap tabel yang diakses. Operasi hanya berjalan jika semua tabel lolos otorisasi. Jika tidak, error izin akan dikembalikan.
Definisi Resource khas
-
Semua resource dari semua akun di semua wilayah.
"Resource": "acs:ots:*:*:*" -
Semua instans dan tabelnya di akun 123456 di wilayah Tiongkok (Hangzhou).
"Resource": "acs:ots:cn-hangzhou:123456:instance*" -
Instans bernama abc dan semua tabelnya di akun 123456 di wilayah Tiongkok (Hangzhou).
"Resource": [ "acs:ots:cn-hangzhou:123456:instance/abc", "acs:ots:cn-hangzhou:123456:instance/abc/table*" ] -
Semua instans yang namanya diawali abc dan semua tabelnya.
"Resource": "acs:ots:*:*:instance/abc*" -
Semua tabel yang namanya diawali xyz di semua instans yang namanya diawali abc (tidak termasuk resource instans, yang tidak cocok dengan
acs:ots:*:*:instance/abc*)."Resource": "acs:ots:*:*:instance/abc*/table/xyz*"
Jenis API dan resource
Operasi API Tablestore dibagi menjadi dua kategori: operasi manajemen instans, serta operasi baca/tulis tabel dan data. Konfigurasi resource untuk masing-masing jenis adalah sebagai berikut:
Resource yang diakses oleh operasi API manajemen
Operasi API manajemen terutama merupakan operasi terkait instans, yang dipanggil baik oleh konsol maupun OpenAPI. Resource yang diakses di bawah ini menghilangkan awalan acs:ots:[region]:[user_id]: dan hanya menjelaskan bagian instans.
|
Operasi API |
Action |
Resource yang diakses |
|
CreateInstance |
|
instance/[instance_name] |
|
UpdateInstance |
|
instance/[instance_name] |
|
GetInstance |
|
instance/[instance_name] |
|
DeleteInstance |
|
instance/[instance_name] |
|
ListInstances |
|
instance/* |
|
ChangeResourceGroup |
|
instance/[instance_name] |
|
ListTagResources |
|
instance/* |
|
TagResources |
|
instance/[instance_name] |
|
UntagResources |
|
instance/[instance_name] |
|
UpdateInstancePolicy |
|
instance/[instance_name] |
|
DeleteInstancePolicy |
|
instance/[instance_name] |
|
CheckInstancePolicy |
|
instance/[instance_name] |
|
UpdateInstanceElasticVCUUpperLimit |
|
instance/[instance_name] |
Resource yang diakses oleh operasi API data
Operasi API data terutama merupakan operasi terkait tabel dan baris, yang dipanggil baik oleh konsol maupun SDK. Definisi Action dan Resource untuk operasi API ini memengaruhi pengalaman pengguna di konsol. Resource yang diakses di bawah ini menghilangkan awalan acs:ots:[region]:[user_id]: dan hanya menjelaskan bagian instans dan tabel.
|
Operasi API |
Action |
Resource yang diakses |
|
ListTable |
|
instance/[instance_name]/table* |
|
CreateTable |
|
instance/[instance_name]/table/[table_name] |
|
UpdateTable |
|
instance/[instance_name]/table/[table_name] |
|
DescribeTable |
|
instance/[instance_name]/table/[table_name] |
|
DeleteTable |
|
instance/[instance_name]/table/[table_name] |
|
CreateGlobalTable |
|
instance/[instance_name]/table/[table_name] |
|
DescribeGlobalTable |
|
instance/[instance_name]/table/[table_name] |
|
UpdateGlobalTable |
|
instance/[instance_name]/table/[table_name] |
|
BindGlobalTable |
|
instance/[instance_name]/table/[table_name] |
|
UnbindGlobalTable |
|
instance/[instance_name]/table/[table_name] |
|
AddDefinedColumn |
|
instance/[instance_name]/table/[table_name] |
|
DeleteDefinedColumn |
|
instance/[instance_name]/table/[table_name] |
|
GetRow |
|
instance/[instance_name]/table/[table_name] |
|
PutRow |
|
instance/[instance_name]/table/[table_name] |
|
UpdateRow |
|
instance/[instance_name]/table/[table_name] |
|
DeleteRow |
|
instance/[instance_name]/table/[table_name] |
|
GetRange |
|
instance/[instance_name]/table/[table_name] |
|
BatchGetRow |
|
instance/[instance_name]/table/[table_name] |
|
BatchWriteRow |
|
instance/[instance_name]/table/[table_name] |
|
ComputeSplitPointsBySize |
|
instance/[instance_name]/table/[table_name] |
|
StartLocalTransaction |
|
instance/[instance_name]/table/[table_name] |
|
CommitTransaction |
|
instance/[instance_name]/table/[table_name] |
|
AbortTransaction |
|
instance/[instance_name]/table/[table_name] |
|
CreateIndex |
|
instance/[instance_name]/table/[table_name] |
|
DropIndex |
|
instance/[instance_name]/table/[table_name] |
|
CreateSearchIndex |
|
instance/[instance_name]/table/[table_name] |
|
UpdateSearchIndex |
|
instance/[instance_name]/table/[table_name] |
|
DeleteSearchIndex |
|
instance/[instance_name]/table/[table_name] |
|
ListSearchIndex |
|
instance/[instance_name]/table/[table_name] |
|
DescribeSearchIndex |
|
instance/[instance_name]/table/[table_name] |
|
Search |
|
instance/[instance_name]/table/[table_name] |
|
ComputeSplits |
|
instance/[instance_name]/table/[table_name] |
|
ParallelScan |
|
instance/[instance_name]/table/[table_name] |
|
CreateTunnel |
|
instance/[instance_name]/table/[table_name] |
|
DeleteTunnel |
|
instance/[instance_name]/table/[table_name] |
|
ListTunnel |
|
instance/[instance_name]/table/[table_name] |
|
ConsumeTunnel |
|
instance/[instance_name]/table/[table_name] |
|
DescribeTunnel |
|
instance/[instance_name]/table/[table_name] |
|
BulkImport |
|
instance/[instance_name]/table/[table_name] |
|
BulkExport |
|
instance/[instance_name]/table/[table_name] |
|
SQL_Select |
|
instance/[instance_name]/table/[table_name] |
|
SQL_Create |
|
instance/[instance_name]/table/[table_name] |
|
SQL_DropMapping |
|
instance/[instance_name]/table/[table_name] |
Condition
Condition menentukan batasan yang harus dipenuhi agar otorisasi berlaku. Condition terdiri dari operator kondisi, kunci kondisi, dan nilai kondisi.
Operator kondisi
Operator kondisi menentukan cara membandingkan kunci kondisi dengan nilai kondisi. Jenis yang didukung mencakup string (String), angka (Number), tanggal dan waktu (Date and time), Boolean (Boolean), dan alamat IP (IP address). Untuk daftar lengkap operator kondisi dan deskripsinya, lihat Operator kondisi.
Kunci kondisi
Tabel berikut menjelaskan kunci kondisi khusus dan kunci kondisi umum yang didukung Tablestore.
|
Jenis |
Kunci kondisi |
Deskripsi |
|
Kondisi khusus Tablestore |
|
Berlaku untuk operasi CreateTable dan UpdateTable. Menentukan apakah hanya mengizinkan pembuatan atau pembaruan tabel terenkripsi. Jenis nilai adalah String. Nilai yang valid: true dan false. Contoh konfigurasi: |
|
|
Menentukan apakah hanya mengizinkan akses dari proxy tepercaya. Akses dari konsol menggunakan proxy tepercaya. Jenis nilai adalah String. Nilai yang valid: true dan false. Contoh konfigurasi: |
|
|
|
Berlaku untuk operasi CreateInstance dan UpdateInstance. Menentukan apakah hanya mengizinkan pembuatan instans yang tidak dapat diakses melalui Internet. Jenis nilai adalah String. Nilai yang valid: true dan false. Contoh konfigurasi: |
|
|
|
Menetapkan versi TLS klien yang diizinkan. Ini juga membatasi akses hanya ke protokol HTTPS. Jenis nilai adalah String. Nilai yang valid: TLSv1, TLSv1.1, TLSv1.2, dan TLSv1.3. Satu kondisi mendukung beberapa versi TLS. Saat beberapa versi TLS dikonfigurasi, klien dapat mengakses Tablestore secara berhasil menggunakan salah satu versi TLS yang dikonfigurasi. |
|
|
|
Membatasi ID AccessKey (AK) dari sumber permintaan. Jenis nilai adalah String. Untuk menentukan beberapa ID AccessKey, masukkan satu ID AccessKey per baris. |
|
|
Kondisi umum |
|
Membatasi alamat IP sumber atau Blok CIDR akses. Jenis nilai adalah String. Nilai yang valid: alamat IP IPv4 atau IPv6 dan Blok CIDR. Satu kondisi mendukung beberapa alamat IP atau Blok CIDR. Penting
Dalam kebijakan instans, jika Anda mengonfigurasi |
|
|
Membatasi VPC sumber akses. Jenis nilai adalah String. Nilai yang valid: ID VPC sumber dan |
|
|
|
Membatasi protokol permintaan, yaitu apakah akses menggunakan transport aman (HTTPS). Jenis nilai adalah Bool. Nilai yang valid:
Jika |
|
|
|
Membatasi waktu kedatangan permintaan di server Tablestore. Jenis nilai adalah Tanggal dan waktu, dalam format ISO 8601, misalnya, |
|
|
|
Membatasi apakah akses menggunakan autentikasi multi-faktor (MFA). Jenis nilai adalah Bool. Nilai yang valid: true dan false. |