Titik akses menyediakan titik masuk unik untuk mengakses bucket. Jika sebuah bucket perlu diakses oleh beberapa aplikasi atau tim dengan izin berbeda, Anda dapat membuat titik akses terpisah untuk masing-masing pihak tersebut dan mengelola izinnya melalui kebijakan titik akses, sehingga menghindari kompleksitas mempertahankan aturan izin rumit dalam satu kebijakan bucket.
Cara kerja
Titik akses bertindak sebagai lapisan proxy akses untuk bucket. Saat Anda membuat titik akses, OSS menghasilkan alias titik akses yang unik. Alias ini digunakan menggantikan nama bucket saat membuat permintaan. Setiap titik akses dapat dikonfigurasi dengan kebijakan titik akses terpisah yang menentukan tindakan, sumber daya, dan identitas yang diizinkan, serta origin jaringan, seperti Internet atau VPC tertentu, untuk mengaktifkan akses terisolasi sesuai skenario.
Saat pengguna membuat permintaan melalui titik akses, sistem mengevaluasi kebijakan RAM, kebijakan bucket, dan kebijakan titik akses secara bersamaan. Permintaan hanya diizinkan jika hasil evaluasi gabungan dari ketiga kebijakan tersebut semuanya bernilai Allow. Untuk detail tentang cara evaluasi izin, lihat Logika evaluasi izin.
Secara default, titik akses tidak dapat mengakses sumber daya bucket. Anda harus terlebih dahulu mengonfigurasi delegasi izin dalam kebijakan bucket dengan menggunakan kunci kondisi oss:DataAccessPointArn, oss:DataAccessPointAccount, atau oss:AccessPointNetworkOrigin untuk memberikan akses eksplisit kepada titik akses terhadap bucket tersebut.
Panduan cepat
Bagian ini memandu Anda melalui tiga langkah: membuat titik akses, mengonfigurasi delegasi izin, dan menggunakan titik akses untuk mengakses sumber daya.
Langkah 1: Buat titik akses
Buat titik akses dan konfigurasikan kebijakan titik aksesnya untuk menentukan siapa yang dapat melakukan tindakan apa pada sumber daya OSS mana dan dalam kondisi apa.
Buka Daftar Titik Akses dan klik Create Access Point.
Masukkan Access Point Name, pilih bucket terkait dan Network Origin, lalu klik Next.
CatatanJika Anda mengatur Network Origin ke VPC, Anda harus memasukkan VPC ID. Anda dapat memperoleh VPC ID dari Konsol VPC.
Wilayah VPC yang ditentukan harus merupakan salah satu wilayah yang mendukung endpoint gateway OSS. Jika wilayah tidak sesuai, permintaan autentikasi tidak dapat dikaitkan dengan benar ke VPC yang ditentukan, sehingga menyebabkan kegagalan autentikasi.
Nonaktifkan opsi Block Public Access dan konfigurasikan kebijakan titik akses.
GUI
Parameter
Deskripsi
Applied To
Pilih apakah akan memberikan otorisasi akses ke Whole Bucket atau Specific Resources.
Resource Paths
Jika Anda mengatur Applied To ke Whole Bucket, maka Resource Paths diatur menjadi
accesspoint/{Access Point Name}/*.Jika Anda mengatur Applied To ke Specific Resources, masukkan direktori atau objek individual yang akan diberi otorisasi. Anda dapat menambahkan beberapa entri.
Authorized User
Tentukan penerima hak akses.
RAM user: Pilih pengguna RAM yang termasuk dalam Akun Alibaba Cloud saat ini.
Akun yang Anda gunakan untuk login harus berupa Akun Alibaba Cloud atau pengguna RAM yang memiliki izin manajemen atas bucket dan izin
ListUsersdi Konsol RAM. Jika tidak, daftar pengguna RAM untuk akun saat ini tidak dapat dilihat.Other Account: Masukkan UID akun lain atau pengguna RAM lain, atau pengguna assumed-role yang ARN-nya diawali dengan
arn:sts, sepertiarn:sts::1798************:assumed-role/role-name/session-name. Anda dapat memberikan izin kepada beberapa pengguna, satu entri per baris.
Authorized Operation
Simple Settings: Pilih kombinasi umum operasi yang diizinkan. Opsi termasuk Read-Only (excluding ListObject), Read-Only (including ListObject), Read/Write, Full Access, dan Deny Access.
Advanced Settings: Sesuaikan Effect (Allow atau Reject) dan Action.
Sintaks
Masukkan kebijakan otorisasi dalam format JSON di editor.
Contoh kebijakan: Berikan izin baca/tulis kepada pengguna
20816353761158****.{ "Version": "1", "Statement": [{ "Effect": "Allow", "Action": [ "oss:GetObject", "oss:PutObject", "oss:GetObjectAcl", "oss:PutObjectAcl", "oss:ListObjects", "oss:AbortMultipartUpload", "oss:ListParts", "oss:RestoreObject", "oss:ListObjectVersions", "oss:GetObjectVersion", "oss:GetObjectVersionAcl", "oss:RestoreObjectVersion" ], "Principal": [ "20816353761158****" ], "Resource": [ "acs:oss:{region-id}:179882766168****:accesspoint/{ap-name}/object/*" ] }, { "Effect": "Allow", "Action": [ "oss:ListObjects", "oss:GetObject" ], "Principal": [ "20816353761158****" ], "Resource": [ "acs:oss:{region-id}:179882766168****:accesspoint/{ap-name}" ], "Condition": { "StringLike": { "oss:Prefix": [ "*" ] } } }] }Dokumen kebijakan lengkap mencakup Version (nomor versi) dan Statement (pernyataan kebijakan).
Version: Versi kebijakan. Nilai ini tetap
1dan tidak dapat diubah.Statement: Aturan kebijakan individual. Satu kebijakan terdiri dari satu atau beberapa pernyataan. Setiap pernyataan otorisasi mencakup Effect, Action, Principal, Resource, dan Condition.
Elemen kebijakan
Deskripsi
Effect
Efek kebijakan. Nilai yang valid adalah
AllowdanDeny.Action
Operasi yang dilakukan pada sumber daya. Wildcard asterisk (
*) didukung.Principal
Pengguna, akun, atau role yang menjadi subjek kebijakan.
Resource
Sumber daya yang menjadi subjek kebijakan.
Condition
Kondisi yang harus dipenuhi agar kebijakan berlaku.
Jika beberapa kondisi ditentukan, semuanya dievaluasi menggunakan logika AND; semua kondisi harus terpenuhi agar kebijakan berlaku.
Untuk daftar lengkap elemen kebijakan, lihat Sintaks dan Elemen Otorisasi.
Klik Submit dan tunggu hingga titik akses dibuat.
Langkah 2: Delegasikan izin
Setelah membuat titik akses, Anda juga harus mengonfigurasi delegasi izin dalam kebijakan bucket untuk menentukan titik akses mana saja yang dapat mengakses bucket tersebut. Tersedia tiga jenis delegasi izin:
oss:DataAccessPointArn: Mendelegasikan izin akses untuk titik akses tertentu.oss:DataAccessPointAccount: Mendelegasikan izin akses untuk semua titik akses di bawah Akun Alibaba Cloud saat ini.oss:AccessPointNetworkOrigin: Mendelegasikan izin akses untuk semua titik akses yang memiliki origin jaringan tertentu.
Titik akses tertentu
Buka Daftar Bucket dan klik nama bucket target.
Pada panel navigasi kiri, pilih , lalu klik tab Add Rule by Syntax.
Klik Edit dan masukkan kebijakan otorisasi dalam format JSON di editor.
CatatanSaat mengonfigurasi kebijakan, ganti UID, nama bucket, ID wilayah, dan nama titik akses dalam contoh dengan nilai aktual Anda. Jika kebijakan bucket sudah berisi pernyataan, tambahkan aturan ini ke dalam array
Statement.{ "Version": "1", "Statement": [{ "Effect": "Allow", "Action": [ "oss:*" ], "Principal": [ "*" ], "Resource": [ "acs:oss:*:179882766168****:example-bucket", "acs:oss:*:179882766168****:example-bucket/*" ], "Condition": { "StringEquals": { "oss:DataAccessPointArn": [ "acs:oss:oss-{region-id}:179882766168****:accesspoint/{ap-name}" ] } } }] }Klik Save untuk menerapkan kebijakan bucket.
Semua titik akses
Buka Daftar Bucket dan klik nama bucket target.
Pada panel navigasi kiri, pilih , lalu klik tab Add Rule by Syntax.
Klik Edit dan masukkan kebijakan otorisasi dalam format JSON di editor.
CatatanSaat mengonfigurasi kebijakan, ganti UID dan nama bucket dalam contoh dengan nilai aktual Anda. Jika kebijakan bucket sudah berisi pernyataan, tambahkan aturan ini ke dalam array
Statement.{ "Version": "1", "Statement": [{ "Effect": "Allow", "Action": [ "oss:*" ], "Principal": [ "*" ], "Resource": [ "acs:oss:*:179882766168****:example-bucket", "acs:oss:*:179882766168****:example-bucket/*" ], "Condition": { "StringEquals": { "oss:DataAccessPointAccount": [ "179882766168****" ] } } }] }Klik Save untuk menerapkan kebijakan bucket.
Berdasarkan origin jaringan
Buka Daftar Bucket dan klik nama bucket target.
Pada panel navigasi kiri, pilih , lalu klik tab Add Rule by Syntax.
Klik Edit dan masukkan kebijakan otorisasi dalam format JSON di editor.
CatatanSaat mengonfigurasi kebijakan, ganti UID dan nama bucket dalam contoh dengan nilai aktual Anda. Jika kebijakan bucket sudah berisi pernyataan, tambahkan aturan ini ke dalam array
Statement.Jika
oss:AccessPointNetworkOrigindiatur keinternet, izin didelegasikan ke semua titik akses yang origin jaringannya adalah internet. Konfigurasi ini memungkinkan akses baik dari internet maupun VPC. Untuk membatasi akses hanya ke VPC, ubah nilainya menjadivpc.
{ "Version": "1", "Statement": [{ "Effect": "Allow", "Action": [ "oss:*" ], "Principal": [ "*" ], "Resource": [ "acs:oss:*:179882766168****:example-bucket", "acs:oss:*:179882766168****:example-bucket/*" ], "Condition": { "StringEquals": { "oss:AccessPointNetworkOrigin": [ "internet" ] } } }] }Klik Save untuk menerapkan kebijakan bucket.
Jika Anda menerima pesan error seperti "The bucket policy contains public access semantics," nonaktifkan pengaturan Block Public Access untuk bucket sebelum mendelegasikan izin untuk titik akses.
Langkah 3: Akses sumber daya
Identitas yang telah diberi otorisasi, seperti pengguna RAM, kemudian dapat menggunakan alias ini untuk mengakses sumber daya OSS yang sesuai.
SDK
Saat ini, hanya SDK Java dan Python yang mendukung akses ke sumber daya OSS menggunakan alias titik akses.
import com.aliyun.sdk.service.oss2.OSSClient;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.StaticCredentialsProvider;
import com.aliyun.sdk.service.oss2.models.GetObjectRequest;
import java.io.File;
/**
* Contoh OSS Java SDK V2: Unduh objek ke file lokal menggunakan titik akses.
*/
public class DownloadObjectWithAccessPoint {
public static void main(String[] args) {
// Buat klien OSS.
String accessKeyId = System.getenv("OSS_ACCESS_KEY_ID");
String accessKeySecret = System.getenv("OSS_ACCESS_KEY_SECRET");
CredentialsProvider provider = new StaticCredentialsProvider(accessKeyId, accessKeySecret);
OSSClient client = OSSClient.newBuilder()
.credentialsProvider(provider)
.region("<region-id>")
.build();
// Unduh objek ke file lokal menggunakan alias titik akses.
String bucket = "example-ap-b156d01070a10322664d6704cd1d47****-ossalias";
String key = "example.jpg";
File file = new File("example.jpg");
client.getObjectToFile(GetObjectRequest.newBuilder()
.bucket(bucket)
.key(key)
.build(), file);
System.out.println("Unduhan selesai: " + key + " -> " + file.getPath());
// Tutup klien.
try {
client.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Contoh OSS Python SDK V2: Unduh objek ke file lokal menggunakan titik akses."""
import alibabacloud_oss_v2 as oss
def main() -> None:
"""Fungsi utama"""
# Buat klien OSS.
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
config = oss.config.load_default()
config.credentials_provider = credentials_provider
config.region = "<region-id>"
config.endpoint = "oss-<region-id>.aliyuncs.com"
client = oss.Client(config)
# Unduh objek ke file lokal menggunakan alias titik akses.
bucket = "example-ap-b156d01070a10322664d6704cd1d47****-ossalias"
key = "example.jpg"
file_path = "example.jpg"
request = oss.GetObjectRequest(bucket, key)
client.get_object_to_file(request, file_path)
print(f"Unduhan selesai: {key} -> {file_path}")
if __name__ == "__main__":
main()
ossutil
Saat menggunakan ossutil untuk mengakses sumber daya OSS, gunakan alias titik akses sebagai nama bucket.
ossutil cp oss://example-ap-b156d01070a10322664d6704cd1d47****-ossalias/example.jpg /tmpREST API
Saat menggunakan REST API untuk mengakses sumber daya OSS, gunakan alias titik akses dalam header Host. Contoh permintaan berikut menunjukkan contoh permintaan:
GET /ObjectName HTTP/1.1
Host: example-ap-b156d01070a10322664d6704cd1d47****-ossalias.oss-{region-id}.aliyuncs.com
Date: GMT Date
Authorization: SignatureValueContoh skenario
Contoh ini menunjukkan cara menggunakan titik akses untuk menyediakan akses aman dan terisolasi bagi beberapa departemen dalam skenario analitik data besar.
Skenario
Sebuah perusahaan (UID Akun Alibaba Cloud: 137918634953****) menyimpan data yang dikumpulkan secara terpusat dalam bucket bernama examplebucket. Sepuluh departemen bisnis berbeda harus mengakses bucket ini dengan persyaratan sebagai berikut:
Departemen | Ruang lingkup akses | Izin | Origin jaringan |
Departemen 1–3 | Direktori | Hanya baca | Internet |
Departemen 4 | Seluruh bucket | Baca/Tulis | Internet |
Departemen 5–10 | Direktori | Baca/Tulis | Hanya VPC |
Desain solusi
Berdasarkan persyaratan isolasi bisnis dan batasan keamanan, Anda dapat merancang tiga titik akses untuk skenario akses yang berbeda. Gunakan kebijakan titik akses untuk menerapkan kontrol izin presisi dan pembatasan akses jaringan.
Titik akses | Parameter | Origin jaringan | Penerima | Sumber daya yang diizinkan | Izin |
Titik Akses 1 |
| Internet | Pengguna RAM untuk Departemen 1–3 (UID: |
| Hanya baca |
Titik Akses 2 |
| Internet | Pengguna RAM untuk Departemen 4 (UID: |
| Baca/Tulis |
Titik Akses 3 |
| VPC | Pengguna RAM untuk Departemen 5–10 (UID: |
| Baca/Tulis |
Kebijakan titik akses
ap-01: Akses hanya baca
{
"Version": "1",
"Statement": [{
"Effect": "Allow",
"Action": [
"oss:GetObject",
"oss:GetObjectAcl",
"oss:ListObjects",
"oss:RestoreObject",
"oss:ListObjectVersions",
"oss:GetObjectVersion",
"oss:GetObjectVersionAcl",
"oss:RestoreObjectVersion"
],
"Principal": [
"26571698800555****"
],
"Resource": [
"acs:oss:{region-id}:137918634953****:accesspoint/ap-01/object/dir1/*"
]
},{
"Effect": "Allow",
"Action": [
"oss:ListObjects",
"oss:GetObject"
],
"Principal": [
"26571698800555****"
],
"Resource": [
"acs:oss:{region-id}:137918634953****:accesspoint/ap-01"
],
"Condition": {
"StringLike": {
"oss:Prefix": [
"dir1/*"
]
}
}
}]
}ap-02: Akses baca/tulis
{
"Version": "1",
"Statement": [{
"Effect": "Allow",
"Action": [
"oss:GetObject",
"oss:PutObject",
"oss:GetObjectAcl",
"oss:PutObjectAcl",
"oss:ListObjects",
"oss:AbortMultipartUpload",
"oss:ListParts",
"oss:RestoreObject",
"oss:ListObjectVersions",
"oss:GetObjectVersion",
"oss:GetObjectVersionAcl",
"oss:RestoreObjectVersion"
],
"Principal": [
"25770968794578****"
],
"Resource": [
"acs:oss:{region-id}:137918634953****:accesspoint/ap-02/object/*"
]
},{
"Effect": "Allow",
"Action": [
"oss:ListObjects",
"oss:GetObject"
],
"Principal": [
"25770968794578****"
],
"Resource": [
"acs:oss:{region-id}:137918634953****:accesspoint/ap-02"
],
"Condition": {
"StringLike": {
"oss:Prefix": [
"*"
]
}
}
}]
}ap-03: Akses baca/tulis melalui VPC
{
"Version": "1",
"Statement": [{
"Effect": "Allow",
"Action": [
"oss:GetObject",
"oss:PutObject",
"oss:GetObjectAcl",
"oss:PutObjectAcl",
"oss:ListObjects",
"oss:AbortMultipartUpload",
"oss:ListParts",
"oss:RestoreObject",
"oss:ListObjectVersions",
"oss:GetObjectVersion",
"oss:GetObjectVersionAcl",
"oss:RestoreObjectVersion"
],
"Principal": [
"26806658794579****"
],
"Resource": [
"acs:oss:{region-id}:137918634953****:accesspoint/ap-03/object/dir2/*"
]
},{
"Effect": "Allow",
"Action": [
"oss:ListObjects",
"oss:GetObject"
],
"Principal": [
"26806658794579****"
],
"Resource": [
"acs:oss:{region-id}:137918634953****:accesspoint/ap-03"
],
"Condition": {
"StringLike": {
"oss:Prefix": [
"dir2/*"
]
}
}
}]
}Delegasi kebijakan bucket
Karena skenario ini melibatkan beberapa titik akses di bawah akun yang sama, gunakan oss:DataAccessPointAccount untuk delegasi terpadu guna menyederhanakan kebijakan bucket. Untuk kontrol lebih granular, Anda juga dapat menggunakan oss:DataAccessPointArn untuk mendelegasikan izin untuk setiap titik akses secara individual.
Delegasi terpadu
{
"Version": "1",
"Statement": [{
"Effect": "Allow",
"Action": [
"oss:*"
],
"Principal": [
"*"
],
"Resource": [
"acs:oss:*:137918634953****:examplebucket",
"acs:oss:*:137918634953****:examplebucket/*"
],
"Condition": {
"StringEquals": {
"oss:DataAccessPointAccount": [
"137918634953****"
]
}
}
}]
}Delegasi individual
{
"Version": "1",
"Statement": [{
"Effect": "Allow",
"Action": [
"oss:*"
],
"Principal": [
"*"
],
"Resource": [
"acs:oss:*:137918634953****:examplebucket",
"acs:oss:*:137918634953****:examplebucket/*"
],
"Condition": {
"StringEquals": {
"oss:DataAccessPointArn": [
"acs:oss:oss-{region-id}:137918634953****:accesspoint/ap-01",
"acs:oss:oss-{region-id}:137918634953****:accesspoint/ap-02",
"acs:oss:oss-{region-id}:137918634953****:accesspoint/ap-03"
]
}
}
}]
}Logika evaluasi izin
Hasil RAM dan Kebijakan bucket | Hasil kebijakan titik akses | Hasil akhir |
Allow | Allow | Allow |
Allow | Deny | Deny |
Allow | Implicit Deny | Implicit Deny |
Deny | Allow | Deny |
Deny | Deny | Deny |
Deny | Implicit Deny | Deny |
Implicit Deny | Allow | Implicit Deny |
Implicit Deny | Deny | Deny |
Implicit Deny | Implicit Deny | Implicit Deny |
Allow: Permintaan akses cocok dengan pernyataan Allow dalam kebijakan dan tidak cocok dengan pernyataan Deny apa pun.
Explicit deny: Permintaan akses cocok dengan pernyataan Deny dalam kebijakan. Karena pernyataan Deny memiliki prioritas lebih tinggi, hasilnya adalah penolakan eksplisit, bahkan jika permintaan tersebut juga cocok dengan pernyataan Allow.
Implicit deny: Permintaan akses tidak cocok dengan pernyataan Allow maupun Deny. Secara default, identitas RAM tidak memiliki izin untuk melakukan tindakan apa pun. Setiap tindakan yang tidak secara eksplisit diizinkan secara implisit ditolak.
Kuota dan batasan
Batasan | Deskripsi |
Metode pembuatan | Anda dapat membuat titik akses menggunakan Konsol OSS, API, dan ossutil, tetapi tidak menggunakan SDK. |
Jumlah titik akses | Setiap Akun Alibaba Cloud dibatasi hingga 1.000 titik akses. |
Aturan modifikasi | Setelah titik akses dibuat, Anda hanya dapat memodifikasi kebijakan titik aksesnya. Anda tidak dapat mengubah informasi dasarnya, seperti nama titik akses atau alias titik akses. |
Metode akses | Akses anonim tidak didukung. |
FAQ
Dukungan daftar IP yang diizinkan
Ya. Tambahkan kondisi ke blok Condition dalam kebijakan titik akses Anda, misalnya: "IpAddress": {"acs:SourceIp": ["192.0.2.0/24"]}.
Izin yang diperlukan untuk pembuatan
Izin berikut diperlukan: oss:CreateAccessPoint, oss:GetAccessPoint, oss:DeleteAccessPoint, oss:ListAccessPoints, oss:PutAccessPointPolicy, oss:GetAccessPointPolicy, oss:DeleteAccessPointPolicy, oss:PutBucketPolicy, oss:GetBucketPolicy, dan oss:DeleteBucketPolicy.