Bucket Policy, bir pakete eklenen kaynak tabanlı bir yetkilendirme ilkesidir. Paket politikalarını kullanarak hesaplar arası erişim izni verebilir, anonim erişimi etkinleştirebilir veya IP adresine ya da VPC'ye göre erişimi kısıtlayabilirsiniz.
Nasıl çalışır
Bucket Policy, kaynak tabanlı bir model kullanır: Bir pakete eklenir ve hangi esasların (principal), hangi koşullar altında hangi kaynaklarda hangi işlemleri yapabileceğini tanımlar.
Bir istek geldiğinde OSS, paket politikaları ve RAM politikaları dahil olmak üzere tüm ilgili politikaları değerlendirir. Değerlendirme önce reddet (deny-first) ilkesini takip eder: Açık bir Reddet (Deny) kuralı varsa, İzin (Allow) kuralları ne olursa olsun istek engellenir. Eşleşen bir kural yoksa istek varsayılan olarak reddedilir.
Paket sahipleri için Bucket Policy'lerin özel kuralları vardır:
Esas (Principal) joker karakter (*) olarak ayarlandığında ve politika bir koşul içermiyorsa, politika yalnızca paket sahibi dışındaki kullanıcılar için geçerlidir.
Esas (Principal) joker karakter (*) olarak ayarlandığında ve politika bir koşul içeriyorsa, politika paket sahibi ve anonim kullanıcılar dahil tüm kullanıcılar için geçerlidir. Bir Reddet (Deny) kuralı paketin tamamına erişimi engelleyebilir. Bir İzin (Allow) kuralı verilerinizi anonim kullanıcılara açabilir.
Aynı kullanıcı için birden fazla ifade geçerliyse, etkili izinler önce reddet (deny-first) ilkesine uyularak tüm ifadelerin birleşimi olur.
acs:SourceIpkoşul anahtarı yalnızca isteğin kaynak IP adresiyle eşleşir ve IP adresinin genel ağdan mı yoksa bir VPC'den mi geldiğini ayırt etmez. Bu, erişimi kısıtlamak için yalnızcaacs:SourceIpkullanmanız durumunda, aynı IP adresi aralığını kullanan başka bir VPC'den gelen isteklere de izin verileceği ve yetkisiz erişim riski oluşacağı anlamına gelir. Bu nedenle, bir Bucket Policy yapılandırırkenacs:SourceIpbelirtirseniz, isteğin ağ kaynağını açıkça tanımlamak içinacs:SourceVpcda belirtmeniz gerekir.Bu kısıtlama yalnızca yeni Bucket Policy'ler için geçerlidir. Mevcut Bucket Policy'ler etkilenmez. Ancak, mevcut bir Bucket Policy'nin değiştirilmesi yeni bir gönderim olarak kabul edilir ve bu kısıtlamaya tabi tutulur.
Bucket policy yapılandırma
OSS iki yapılandırma yöntemi sunar: grafiksel ve sözdizimi.
Grafiksel yöntem: Yaygın yetkilendirme senaryoları için form tabanlı arayüz.
Sözdizimi yöntemi: Tüm politika özelliklerini ve karmaşık koşul kombinasyonlarını destekleyen JSON tabanlı düzenleyici.
Grafiksel yöntem
Buckets listesine gidin ve hedef paketi tıklayın.
Sol gezinme bölmesinde seçeneğini tıklayın.
-
Add in GUI seçeneğini belirleyin ve ardından Authorize düğmesini tıklayın.
Parametre
Açıklama
Applied To
İzinlerin Whole Bucket üzerinde mi yoksa Specific Resources üzerinde mi verileceğini seçin.
Resource Paths
-
Applied To değerini Whole Bucket olarak ayarlarsanız, Resource Paths değeri
bucket-name/*olarak ayarlanır. -
Applied To değerini Specific Resources olarak ayarlarsanız, yetkilendirmek istediğiniz dizini veya nesneyi girin. Birden fazla giriş ekleyebilirsiniz.
Authorized User
İzin verilecek esası (principal) belirtin.
-
All Accounts (*): Anonim kullanıcılar dahil herkese izin verir.
-
RAM User: Geçerli Alibaba Cloud hesabına ait bir RAM kullanıcısı seçin.
Oturum açmış hesabın bir Alibaba Cloud hesabı (kök hesap) veya RAM'de paket yönetimi izinlerine ve
ListUsersiznine sahip bir RAM kullanıcısı olması gerekir. Aksi takdirde RAM kullanıcı listesi görünmez. -
Other Accounts: Yetkilendirmek için başka bir hesabın veya RAM kullanıcısının UID'sini ya da kimlik bilgileri
arn:stsile başlayan geçici bir kullanıcıyı girin; örneğinarn:sts::1798**:assumed-role/role-name/session-name. Birden fazla kullanıcıya yetki verebilirsiniz. Her satıra bir kullanıcı girin.İzinler bir RAM rolüne verilirse, rol OSS konsolundan kaynaklara erişemez. Bunun yerine ossutil, bir SDK veya bir API kullanın.
Authorized Operation
-
Simple Settings: Yaygın yetkili işlem kombinasyonlarından birini seçin. Seçenekler arasında Read-Only (excluding ListObject), Read-Only (including ListObject), Read/Write, Full Access ve Deny Access bulunur.
-
Advanced Settings: Effect (Allow veya Reject) ve Operation değerlerini özelleştirin.
Condition (İsteğe bağlı)
Politikanın geçerli olacağı koşulları ayarlayın.
-
Access Method: Seçenekler arasında HTTPS ve HTTP bulunur. Bir seçenek belirlediğinizde politika yalnızca seçilen yöntemi kullanan erişim istekleri için geçerli olur.
-
IP =: IP adresi listesi girin. Bu seçeneği belirlerseniz politika yalnızca belirtilen IP adreslerinden gelen erişim istekleri için geçerli olur.
-
IP ≠: IP adresi listesi girin. Bu seçeneği belirlerseniz politika yalnızca belirtilen IP adreslerinden gelmeyen erişim istekleri için geçerli olur.
-
VPC =: Geçerli hesaba ait bir VPC seçin veya başka bir hesaba ait bir VPC girin. Bu seçeneği belirlerseniz politika yalnızca belirtilen VPC'den gelen erişim istekleri için geçerli olur.
-
VPC ≠: Geçerli hesaba ait bir VPC seçin veya başka bir hesaba ait bir VPC girin. Bu seçeneği belirlerseniz politika yalnızca belirtilen VPC'den gelmeyen erişim istekleri için geçerli olur.
Birden fazla koşul yapılandırdığınızda tüm koşulların karşılanması gerekir (VE ilişkisi).
-
Yapılandırmanın doğru olduğunu onayladıktan sonra Bucket Policy'yi uygulamak için OK düğmesini tıklayın.
Sözdizimi yöntemi
Buckets listesine gidin ve hedef paketi tıklayın.
Sol gezinme bölmesinde seçeneğini tıklayın.
-
Add by Syntax seçeneğini belirleyin ve ardından Edit düğmesini tıklayın. Düzenleyicide yetkilendirme politikasını JSON formatında girin.
Örnek politika: Bir erişim isteği
vpc-t4nlw426y44rd3iq4xxxxVPC'sinden gelmiyorsa20214760404935xxxxkullanıcısınınexample-bucketüzerindeki tüm işlemlerini reddedin.{ "Version": "1", "Statement": [ { "Sid": "DenyNonVpcAccess", "Effect": "Deny", "Action": "oss:*", "Principal": [ "20214760404935xxxx" ], "Resource": [ "acs:oss:*:174649585760xxxx:example-bucket", "acs:oss:*:174649585760xxxx:example-bucket/*" ], "Condition": { "StringNotEquals": { "acs:SourceVpc": "vpc-t4nlw426y44rd3iq4xxxx" } } } ] }Tam bir yetkilendirme politikası bir Version ve bir Statement içerir.
Version: Erişim politikasının sürümü. Değer sabit olarak
1şeklindedir ve değiştirilemez.-
Statement: Politikanın ana gövdesi. Bir veya daha fazla belirli kural içerir. Her kural isteğe bağlı bir Sid içerir ve bir Effect, bir Action, bir Principal, bir Resource ve bir Condition öğesini barındırır.
Policy element
Description
Meaning in example
Sid (isteğe bağlı)
İfade Kimliği. Politikanın her ifadesi için insan tarafından okunabilen, benzersiz bir tanımlayıcıdır. Farklılaştırma, yönetim ve denetime yardımcı olur ancak izinleri doğrudan etkilemez.
Reddetme ifadesiniDenyNonVpcAccessolarak tanımlar.
Effect
Politikanın etkisi. Geçerli değerlerAllowveDenydeğerleridir.
İsteği reddeder.
Action
Kaynak üzerinde yapılacak belirli eylem. Joker karakter*desteklenir.
Tüm OSS eylemlerini reddedin (oss:*).
PrincipalPolitikanın uygulanacağı kullanıcı, hesap veya rol.
Principal alanını boş bir liste olarak ayarlamak (
Principal:[]), tüm hesaplar için ayarlamakla (Principal:["*"]) aynıdır.
Politika yalnızca20214760404935xxxxRAM kullanıcısına uygulanır.
Resource
Politikanın uygulanacağı kaynaklar.
Politikaexample-bucketpaketinin kendisine ve içindeki tüm nesnelere uygulanır.
ConditionPolitikanın geçerli olacağı koşullar.
Birden fazla koşul yapılandırdığınızda tüm koşulların karşılanması gerekir (VE ilişkisi).
Bu Reddetme politikası yalnızca isteğin kaynak VPC'sivpc-t4nlw426y44rd3iq4xxxxdeğilse geçerli olur.Tam politika öğesi referansı: Authorization syntax and elements.
Yetkilendirme politikasının doğru olduğunu onayladıktan sonra Save düğmesini tıklayın ve ekrandaki talimatları izleyin.
Vektör paketi politikası yapılandırma
Vektör paketleri, paket politikası yapılandırması için yalnızca sözdizimi yöntemini destekler.
Vector Buckets listesine gidin ve hedef vektör paketini tıklayın.
Sol gezinme bölmesinde seçeneğini tıklayın.
-
Edit düğmesini tıklayın. Düzenleyicide yetkilendirme politikasını JSON formatında girin.
Örnek politika:
20816353761158****kullanıcısınavector-bucket-exampleiçindekiindextestdizin tablosu için vektör verilerini okuma ve yazma izni verin.{ "Version": "1", "Statement": [{ "Effect": "Allow", "Action": [ "oss:PutVectors", "oss:GetVectors" ], "Principal": [ "20816353761158****" ], "Resource": [ "acs:ossvector:*:*:vector-bucket-example/indextest" ] }] }Tam bir yetkilendirme politikası bir Version ve bir Statement içerir.
Version: Erişim politikasının sürümü. Değer sabit olarak
1şeklindedir ve değiştirilemez.-
Statement: Politikanın ana gövdesi. Bir veya daha fazla belirli kural içerir. Her kural bir Effect, bir Action, bir Principal, bir Resource ve bir Condition öğesini barındırır.
Policy element
Description
Meaning in example
Effect
Politikanın etkisi. Geçerli değerlerAllowveDenydeğerleridir.
İsteğe izin verir.
Action
Kaynak üzerinde yapılacak belirli eylem. Joker karakter*desteklenir.
Vektör verilerini okuyun ve yazın.
PrincipalPolitikanın uygulanacağı kullanıcı, hesap veya rol.
Principal alanını boş bir liste olarak ayarlamak (
Principal:[]), tüm hesaplar için ayarlamakla (Principal:["*"]) aynıdır.
Politika yalnızca20816353761158****RAM kullanıcısına uygulanır.
Resource
Politikanın uygulanacağı kaynaklar.
Politikavector-bucket-examplepaketindekiindextestdizin tablosuna uygulanır.
ConditionPolitikanın geçerli olacağı koşullar.
Birden fazla koşul yapılandırdığınızda tüm koşulların karşılanması gerekir (VE ilişkisi).
Yok.Tam politika öğesi referansı: Authorization syntax and elements.
Yetkilendirme politikasının doğru olduğunu onayladıktan sonra Save düğmesini tıklayın ve ekrandaki talimatları izleyin.
OSS-HDFS politikası yapılandırma
OSS-HDFS hizmeti kullanıcılarının .dlsdata/ dizinine ve nesnelerine erişebilmesini sağlamak için, OSS-HDFS etkinleştirilmiş bir paket için Bucket Policy yapılandırırken yetkili işlemi Deny Access olarak ayarlamayın. Prerequisites for using OSS-HDFS.
Erişimi belirli ağ IP adreslerine veya bir VPC'ye kısıtlamak için tüm Reddetme (Deny) ifadelerine aşağıdaki koşulu ekleyin. Bu, OSS-HDFS arka uç hizmetinin klasik ağ üzerinden pakete okuma ve yazma yapmasını sağlar.
"StringNotLike": {
"oss:ClassicIntranet": [
"true"
]
}
Yaygın senaryolar: İzin verme
Aşağıdaki senaryolar belirli kullanıcılara, rollere veya tüm kullanıcılara erişim izni vermeyi göstermektedir. Her biri uyarlayabileceğiniz bir politika örneği içerir.
Senaryo 1: Okuma/yazma izni verme
Ekip üyelerine veya ortaklara bir paket için okuma/yazma erişimi verin. Bu örnek, example-bucket üzerinde 27737962156157xxxx ve 20214760404935xxxx RAM kullanıcılarına okuma/yazma izni verir.
Bu politika paketleri listeleme izni vermez. RAM kullanıcıları Buckets sayfasına doğrudan göz atamaz. Bunun yerine, sol gezinme bölmesinde hedef paketi konumuna ekleyebilirler.
{
"Version":"1",
"Statement":[
{
"Effect":"Allow",
"Action":[
"oss:GetObject",
"oss:PutObject",
"oss:GetObjectAcl",
"oss:PutObjectAcl",
"oss:AbortMultipartUpload",
"oss:ListParts",
"oss:RestoreObject",
"oss:GetVodPlaylist",
"oss:PostVodPlaylist",
"oss:PublishRtmpStream",
"oss:ListObjectVersions",
"oss:GetObjectVersion",
"oss:GetObjectVersionAcl",
"oss:RestoreObjectVersion"
],
"Principal":[
"27737962156157xxxx",
"20214760404935xxxx"
],
"Resource":[
"acs:oss:*:174649585760xxxx:example-bucket/*"
]
},
{
"Effect":"Allow",
"Action":[
"oss:ListObjects"
],
"Principal":[
"27737962156157xxxx",
"20214760404935xxxx"
],
"Resource":[
"acs:oss:*:174649585760xxxx:example-bucket"
],
"Condition":{
"StringLike":{
"oss:Prefix":[
"*"
]
}
}
}
]
}
Senaryo 2: Belirli dizinlere salt okunur izni verme
Belirli dizinlere salt okunur erişim izni verin. Bu örnek, 20214760404935xxxx RAM kullanıcısına example-bucket içindeki hangzhou/2020 ve shanghai/2015 ön eklerine sahip dizinler için salt okunur izni verir.
Bu politika paketleri listeleme izni vermez. RAM kullanıcıları Buckets sayfasına doğrudan göz atamaz. Bunun yerine, sol gezinme bölmesinde hedef paketi konumuna ekleyebilirler.
{
"Version":"1",
"Statement":[
{
"Action":[
"oss:GetObject",
"oss:GetObjectAcl",
"oss:GetObjectVersion",
"oss:GetObjectVersionAcl"
],
"Effect":"Allow",
"Principal":[
"20214760404935xxxx"
],
"Resource":[
"acs:oss:*:174649585760xxxx:example-bucket/hangzhou/2020/*",
"acs:oss:*:174649585760xxxx:example-bucket/shanghai/2015/*"
]
},
{
"Action":[
"oss:ListObjects",
"oss:ListObjectVersions"
],
"Condition":{
"StringLike":{
"oss:Prefix":[
"hangzhou/2020/*",
"shanghai/2015/*"
]
}
},
"Effect":"Allow",
"Principal":[
"20214760404935xxxx"
],
"Resource":[
"acs:oss:*:174649585760xxxx:example-bucket"
]
}
]
}
Senaryo 3: Görüntüleme ve listeleme izni verme
Bir kullanıcının paket bilgilerini görüntülemesine ve nesneleri listelemesine izin verin. Bu örnek, bir RAM kullanıcısına example-bucket üzerinde görüntüleme ve listeleme izni verir.
Bu politika paketleri listeleme izni vermez. RAM kullanıcıları Buckets sayfasına doğrudan göz atamaz. Bunun yerine, sol gezinme bölmesinde hedef paketi konumuna ekleyebilirler.
{
"Version":"1",
"Statement":[
{
"Action":[
"oss:Get*",
"oss:ListObjects",
"oss:ListObjectVersions"
],
"Effect":"Allow",
"Principal":[
"20214760404935xxxx"
],
"Resource":[
"acs:oss:*:174649585760xxxx:example-bucket"
]
}
]
}
Senaryo 4: Bir RAM rolüne okuma izni verme
Bir RAM rolü aracılığıyla paket nesnelerine geçici erişim izni verin. Bir RAM kullanıcısı veya uygulama, geçici kimlik bilgilerini almak için rolü üstlenir. Bu örnek, example-bucket içindeki tüm nesneler üzerinde bir RAM rolü altındaki tüm oturumlara ve başka bir rol altındaki belirli bir oturuma okuma izni verir.
Bir RAM rolüne izin verirken Principal şu biçimi takip etmelidir: arn:sts::<uid>:assumed-role/<role-name>/<session-name>. <role-name> ve <session-name> değerlerinin tamamı küçük harf olmalıdır.
{
"Version": "1",
"Statement": [
{
"Action": [
"oss:GetObject"
],
"Effect": "Allow",
"Principal": [
"arn:sts::10323xxxxx72056:assumed-role/role-name/session-name",
"arn:sts::10323xxxxx72056:assumed-role/role2-name/*"
],
"Resource": [
"acs:oss:*:10323xxxxx72056:example-bucket/*"
]
}
]
}
Senaryo 5: Tüm kullanıcılara listeleme izni verme
Tüm kullanıcıların içeriğine erişmeden nesneleri listelemesine izin verin. Bu örnek, tüm kullanıcılara (*) example-bucket üzerinde listeleme izni verir.
{
"Version":"1",
"Statement":[
{
"Action":[
"oss:ListObjects",
"oss:ListObjectVersions"
],
"Effect":"Allow",
"Principal":[
"*"
],
"Resource":[
"acs:oss:*:174649585760xxxx:example-bucket"
]
}
]
}
Senaryo 6: AgenticBucket'te bucketspace oluşturma ve nesne listeleme izni verme
Kullanıcılara belirli bir AgenticBucket'te yalnızca bucketspace'ler (normal paketler yerine) oluşturma izni verirken ayrıntılı kontrol sağlamak için Bucket Policies kullanın. Aşağıdaki politika iki ifade içerir:
İfade 1 (İşlemleri belirli bir AgenticBucket ile sınırlama):
oss:PutBucketiznini belirli bir AgenticBucket ile sınırlamak içinoss:AgenticBucketNamekoşul anahtarını kullanır. Bu, kullanıcıların yalnızca o AgenticBucket'te bucketspace'ler oluşturmasına olanak tanır; normal paketler oluşturamaz. Ayrıca nesneler, çok parçalı yüklemeler ve bucketspace'leri listeleme için diğer yaygın olarak kullanılan işlem izinlerini verir.İfade 2 (Listeleme işlemlerini yalnızca bucketspace'lerle sınırlama): Resource alanında
*-bs-apsrdesenini eşleştirerekoss:ListObjectsişlemlerini yalnızca bucketspace'lerle sınırlar ve normal paketlerdeki listeleme işlemlerini engeller. Action değerinioss:PutBucketolarak değiştirirseniz politika, kullanıcıların normal paketler yerine yalnızca bucketspace'ler oluşturmasını sınırlar.
Bu yapılandırma, bir AgenticBucket senaryosunda bucketspace oluşturma izinleri ile normal paket oluşturma izinleri arasında ayrıntılı ayrım yapılmasını sağlar.
{
"Version": "1",
"Statement": [
{
"Action": [
"oss:GetObject",
"oss:DeleteObject",
"oss:PutObject",
"oss:AbortMultipartUpload",
"oss:ListMultipartUploads",
"oss:ListObjects",
"oss:ListParts",
"oss:PutBucket",
"oss:ListBucketSpaces"
],
"Condition": {
"StringLike": {
"oss:AgenticBucketName": [
"sandbox-test-189xxxxxxxxxxxxx-cn-hangzhou-ab-apsr"
]
}
},
"Effect": "Allow",
"Resource": [
"acs:oss:::"
]
},
{
"Action": [
"oss:ListObjects"
],
"Effect": "Allow",
"Resource": [
"acs:oss:::-bs-apsr"
]
}
]
}
Yaygın senaryolar: Ağ erişimini kısıtlama
Aşağıdaki senaryolar, acs:SourceIp ve acs:SourceVpc koşul anahtarlarını kullanarak ağ kaynağına (genel IP veya VPC) göre paket erişimini kısıtlar. Aşağıdaki tabloda yaygın yaklaşımlar özetlenmiştir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Senaryo 1: Genel ağ erişimini kısıtlama
acs:SourceVpc koşul anahtarı içeren bir reddetme ifadesi ekleyerek bir pakete yönelik tüm genel ağ erişimini engelleyin. Bu ifade, bir VPC'den kaynaklanmayan istekleri reddeder. Aşağıdaki örnek, example-bucket üzerindeki tüm VPC dışı erişimi reddeder.
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action": "oss:*",
"Principal": [
"*"
],
"Resource": [
"acs:oss:*:174649585760xxxx:example-bucket/*",
"acs:oss:*:174649585760xxxx:example-bucket"
],
"Condition": {
"StringNotLike": {
"acs:SourceVpc": [
"vpc-*"
]
}
}
}
]
}
Senaryo 2: Erişimi belirli bir VPC ile sınırlama
acs:SourceVpc koşul anahtarını kullanarak paket erişimini belirli bir VPC ile sınırlayın. Bu ifade, diğer VPC'lerden veya genel ağdan gelen istekleri engeller. Aşağıdaki örnek, t4nlw426y44rd3iq4xxxx VPC'si dışındaki tüm kullanıcıların example-bucket içindeki nesneleri okumasını engeller.
Aşağıdaki reddetme ifadesindeki esas (principal) bir joker karakter (
*) olduğu ve bir koşul içerdiği için reddetme ifadesi paket sahibi dahil tüm kullanıcılar için geçerlidir.Aşağıdaki reddetme ifadesi yalnızca erişimi kısıtlar ve herhangi bir izin vermez. Esasa izin verilmediyse gerekli izinleri vermek için bir izin (allow) ifadesi ekleyebilirsiniz.
{
"Version":"1",
"Statement":[
{
"Effect":"Deny",
"Action":[
"oss:GetObject"
],
"Principal":[
"*"
],
"Resource":[
"acs:oss:*:174649585760xxxx:example-bucket/*"
],
"Condition":{
"StringNotEquals":{
"acs:SourceVpc":[
"vpc-t4nlw426y44rd3iq4xxxx"
]
}
}
}
]
}
Senaryo 3: Erişimi belirli bir genel IP adresi ile sınırlama
Paket erişimini belirli bir genel IP adresi ile sınırlamak için iki reddetme ifadesi oluşturun:
1. İfade (Belirtilmemiş IP adreslerinden gelen genel ağ isteklerini reddetme): Bu ifade, genel ağ isteklerini tanımlamak için
StringNotLike: {"acs:SourceVpc": "vpc-*"}kullanır (genel ağ isteği içinacs:SourceVpcdeğerivpc-ile başlamaz). Ardından belirtilen IP adresinden gelmeyen istekleri reddetmek içinNotIpAddress: {"acs:SourceIp": "..."}kullanır. Her iki koşul da karşılandığında reddetme eylemi tetiklenir.2. İfade (Tüm VPC isteklerini reddetme): Bu ifade, amaç yalnızca belirtilen genel IP adresinden erişime izin vermek olduğundan herhangi bir VPC'den gelen tüm istekleri eşleştirmek ve reddetmek için
StringLike: {"acs:SourceVpc": "vpc-*"}kullanır.
Bir istek herhangi bir ifadeyle eşleşirse reddedilir. Aşağıdaki örnek, 203.0.113.5 genel IP'si dışındaki tüm kullanıcıların example-bucket üzerindeki okuma erişimini reddeder.
Aşağıdaki reddetme ifadesindeki esas (principal) bir joker karakter (
*) olduğu ve bir koşul içerdiği için reddetme ifadesi paket sahibi dahil tüm kullanıcılar için geçerlidir.Aşağıdaki reddetme ifadesi yalnızca erişimi kısıtlar ve herhangi bir izin vermez. Esasa izin verilmediyse gerekli izinleri vermek için bir izin (allow) ifadesi ekleyebilirsiniz.
{
"Version": "1",
"Statement": [{
"Effect": "Deny",
"Action": [
"oss:GetObject"
],
"Principal": [
"*"
],
"Resource": [
"acs:oss:*:174649585760xxxx:example-bucket/*"
],
"Condition": {
"NotIpAddress": {
"acs:SourceIp": [
"203.0.113.5"
]
},
"StringNotLike": {
"acs:SourceVpc": [
"vpc-*"
]
}
}
},
{
"Effect": "Deny",
"Action": [
"oss:GetObject"
],
"Principal": [
"*"
],
"Resource": [
"acs:oss:*:174649585760xxxx:example-bucket/*"
],
"Condition": {
"StringLike": {
"acs:SourceVpc": [
"vpc-*"
]
}
}
}
]
}
Senaryo 4: Erişimi bir VPC'deki IP aralığı ile sınırlama
Paket erişimini belirli bir VPC içindeki belirli bir IP aralığı ile sınırlamak için iki reddetme ifadesi oluşturun:
1. İfade (Belirtilen VPC dışındaki tüm istekleri reddetme): Bu ifade, diğer VPC'lerden ve genel ağdan gelen istekleri reddetmek için
StringNotEquals: {"acs:SourceVpc": "..."}kullanır.2. İfade (VPC içinde belirtilen IP aralığı dışındaki istekleri reddetme): Bu ifade, belirtilen VPC'den gelen istekleri eşleştirmek için
StringEquals: {"acs:SourceVpc": "..."}kullanır ve ardından belirtilen IP adresi aralığı dışındaki istekleri reddetmek içinNotIpAddress: {"acs:SourceIp": "..."}kullanır. Her iki koşul da karşılandığında reddetme eylemi tetiklenir.
Bir istek herhangi bir ifadeyle eşleşirse reddedilir. Aşağıdaki örnek, t4nlw426y44rd3iq4xxxx VPC'si içindeki 192.168.0.0/16 aralığı dışındaki tüm kullanıcıların example-bucket üzerindeki okuma erişimini reddeder.
Aşağıdaki reddetme ifadesindeki esas (principal) bir joker karakter (
*) olduğu ve bir koşul içerdiği için reddetme ifadesi paket sahibi dahil tüm kullanıcılar için geçerlidir.Aşağıdaki reddetme ifadesi yalnızca erişimi kısıtlar ve herhangi bir izin vermez. Esasa izin verilmediyse gerekli izinleri vermek için bir izin (allow) ifadesi ekleyebilirsiniz.
{
"Version":"1",
"Statement":[
{
"Effect":"Deny",
"Action":[
"oss:GetObject"
],
"Principal":[
"*"
],
"Resource":[
"acs:oss:*:174649585760xxxx:example-bucket/*"
],
"Condition":{
"StringNotEquals":{
"acs:SourceVpc":[
"vpc-t4nlw426y44rd3iq4xxxx"
]
}
}
},
{
"Effect":"Deny",
"Action":[
"oss:GetObject"
],
"Principal":[
"*"
],
"Resource":[
"acs:oss:*:174649585760xxxx:example-bucket/*"
],
"Condition":{
"StringEquals":{
"acs:SourceVpc":[
"vpc-t4nlw426y44rd3iq4xxxx"
]
},
"NotIpAddress":{
"acs:SourceIp":[
"192.168.0.0/16"
]
}
}
}
]
}
Senaryo 5: Erişimi bir genel IP veya VPC ile sınırlama
Paket erişimini belirli bir genel IP veya belirli bir VPC ile sınırlamak için iki reddetme ifadesi oluşturun:
1. İfade (Genel ağ istekleri için belirtilmemiş IP'leri reddetme): Bu ifade, genel ağ isteklerini tanımlamak için
StringNotLike: {"acs:SourceVpc": "vpc-*"}kullanır ve ardından belirtilmemiş genel IP adreslerinden gelen istekleri reddetmek içinNotIpAddress: {"acs:SourceIp": "..."}kullanır. Her iki koşul da karşılandığında reddetme eylemi tetiklenir. VPC istekleriacs:SourceVpcdeğerivpc-ile başladığından bu ifadeyle eşleşmez.2. İfade (VPC istekleri için belirtilmemiş VPC'leri reddetme): Bu ifade, VPC isteklerini tanımlamak için
StringLike: {"acs:SourceVpc": "vpc-*"}kullanır ve ardından belirtilmemiş VPC'lerden gelen istekleri reddetmek içinStringNotEquals: {"acs:SourceVpc": "..."}kullanır. Her iki koşul da karşılandığında reddetme eylemi tetiklenir. Genel ağ istekleriacs:SourceVpcdeğerivpc-ile başlamadığından bu ifadeyle eşleşmez.
Bir istek herhangi bir ifadeyle eşleşirse reddedilir. Aşağıdaki örnek, 203.0.113.5 genel IP'si veya t4nlw426y44rd3iq4xxxx VPC'si dışındaki tüm kullanıcıların example-bucket üzerindeki okuma erişimini reddeder.
Aşağıdaki reddetme ifadesindeki esas (principal) bir joker karakter (
*) olduğu ve bir koşul içerdiği için reddetme ifadesi paket sahibi dahil tüm kullanıcılar için geçerlidir.Aşağıdaki reddetme ifadesi yalnızca erişimi kısıtlar ve herhangi bir izin vermez. Esasa izin verilmediyse gerekli izinleri vermek için bir izin (allow) ifadesi ekleyebilirsiniz.
{
"Version":"1",
"Statement":[
{
"Effect":"Deny",
"Action":[
"oss:GetObject"
],
"Principal":[
"*"
],
"Resource":[
"acs:oss:*:174649585760xxxx:example-bucket/*"
],
"Condition":{
"StringNotLike":{
"acs:SourceVpc":[
"vpc-*"
]
},
"NotIpAddress":{
"acs:SourceIp":[
"203.0.113.5"
]
}
}
},
{
"Effect":"Deny",
"Action":[
"oss:GetObject"
],
"Principal":[
"*"
],
"Resource":[
"acs:oss:*:174649585760xxxx:example-bucket/*"
],
"Condition":{
"StringLike":{
"acs:SourceVpc":[
"vpc-*"
]
},
"StringNotEquals":{
"acs:SourceVpc":[
"vpc-t4nlw426y44rd3iq4xxxx"
]
}
}
}
]
}
Senaryo 6: IP karalistesi ayarlama
Paket politikasına bir reddetme ifadesi ekleyerek belirli IP adreslerinden veya aralıklarından gelen erişimi engelleyin.
StringLike: {"acs:SourceVpc": "*"} koşulu, tüm değerleri eşleştirmek için bir joker karakter kullanır ve VPC kapsamını kısıtlamaz. Yalnızca acs:SourceIp koşulunun karşılık gelen bir acs:SourceVpc koşulu gerektirdiği kısıtlamayı karşılamak için vardır.
Aşağıdaki reddetme ifadesindeki esas (principal) bir joker karakter (
*) olduğu ve bir koşul içerdiği için reddetme ifadesi paket sahibi dahil tüm kullanıcılar için geçerlidir.Birden fazla IP adresi ve IP adresi aralığı yapılandırabilirsiniz. Bunları virgülle ayırın.
{
"Version": "1",
"Statement": [{
"Effect": "Deny",
"Action": "oss:*",
"Principal": [
"*"
],
"Resource": [
"acs:oss:*:174649585760xxxx:example-bucket/*",
"acs:oss:*:174649585760xxxx:example-bucket"
],
"Condition": {
"IpAddress": {
"acs:SourceIp": [
"101.***.***.100"
]
},
"StringLike": {
"acs:SourceVpc": [
"*"
]
}
}
}]
}
Senaryo 7: Klasik ağ erişimini yapılandırma
oss:ClassicIntranet koşul anahtarı, bir isteğin OSS klasik ağından kaynaklanıp kaynaklanmadığını gösterir. Geçerli değerler true ve false değerleridir. Bazı OSS arka uç hizmetleri (günlük teslimi ve paket envanteri gibi) paketlere klasik ağ üzerinden erişir. Klasik ağdan gelen istekleri eşleştirmek için aşağıdaki koşulu kullanın.
"Condition": {
"StringEquals": {
"oss:ClassicIntranet": [
"true"
]
}
}
Ağ erişimi kısıtlamaları (Reddetme politikaları) yapılandırırken yukarıdaki arka uç hizmetlerine izin vermek için Reddetme ifadesinin Condition bloğuna aşağıdaki koşulu ekleyin ve klasik ağ isteklerini hariç tutarak istenmeyen engellemeleri önleyin.
"StringNotEquals": {
"oss:ClassicIntranet": [
"true"
]
}
Yaygın senaryolar: Güvenlik kontrolleri
Aşağıdaki senaryolar güvenlik kontrollerini uygular: kimlik bilgisi kısıtlamaları, genel erişimin önlenmesi ve saklama politikası sınırları.
Senaryo 1: API çağrıları için geçici kimlik bilgileri gerektirme
API çağrıları için geçici erişim kimlik bilgileri gerektirin. Bu politika, uzun süreli kimlik bilgilerinden (Alibaba Cloud hesabı veya RAM kullanıcı erişim anahtarları) gelen erişimi engellemek için acs:AccessId koşul anahtarını kullanır. Aşağıdaki örnek, geçici kimlik bilgilerine (TMP. veya STS. ile başlayan) sahip olmayan tüm kullanıcıların example-bucket paketini görüntülemesini ve nesnelerini listelemesini engeller.
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action":[
"oss:Get*",
"oss:ListObjects",
"oss:ListObjectVersions"
],
"Principal":[
"*"
],
"Resource":[
"acs:oss:*:174649585760xxxx:example-bucket/*"
],
"Condition": {
"StringNotLike": {
"acs:AccessId": [
"TMP.*",
"STS.*"
]
}
}
}
]
}
Senaryo 2: Genel ACL'leri yasaklama
Paket ve nesne ACL'lerinin genel olarak ayarlanmasını önleyin. İki reddetme ifadesi oluşturun:
Paket ACL'sinin
privatedışında herhangi bir izne ayarlanmasını önlemek içinoss:x-oss-aclkoşul anahtarını kullanarak bir reddetme ifadesi oluşturun. Genel okuma veya genel okuma-yazma ACL'si ayarlama girişimi reddetme kuralını tetikler.Nesne ACL'sinin
privatevedefaultdışında herhangi bir izne ayarlanmasını önlemek içinoss:x-oss-object-aclkoşul anahtarını kullanarak bir reddetme ifadesi oluşturun.
Bir istek herhangi bir ifadeyle eşleşirse reddedilir. Aşağıdaki örnek, example-bucket üzerindeki genel ACL işlemlerini reddeder.
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action": [
"oss:PutBucketAcl"
],
"Principal": [
"*"
],
"Resource": [
"acs:oss:*:*:example-bucket"
],
"Condition": {
"StringNotEquals": {
"oss:x-oss-acl": "private"
}
}
},
{
"Effect": "Deny",
"Action": [
"oss:PutObjectAcl"
],
"Principal": [
"*"
],
"Resource": [
"acs:oss:*:*:example-bucket/*"
],
"Condition": {
"StringNotEquals": {
"oss:x-oss-object-acl": [
"private",
"default"
]
}
}
}
]
}
Senaryo 3: ObjectWorm saklama süresini sınırlama
Bir paket için nesne düzeyinde saklama politikası (ObjectWorm) etkinleştirdikten sonra maksimum saklama süresini sınırlamak için bir paket politikası kullanın. Aşağıdaki örnek saklama süresini 30 günle sınırlar. 30 günü aşan herhangi bir PutObjectRetention isteği reddedilir.
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action": [
"oss:PutObjectRetention"
],
"Principal": [
"*"
],
"Resource": [
"acs:oss:*:174649585760xxxx:example-bucket/*"
],
"Condition": {
"NumericGreaterThan": {
"oss:object-remaining-retention-days": "30"
}
}
}
]
}
oss:object-remaining-retention-daysbir ObjectWorm politikası için koşul anahtarıdır. İstekte belirtilen kalan saklama günlerinin sayısını temsil eder.Bu politikadaki esas (principal) bir joker karakter (*) olduğu ve bir koşul içerdiği için politika paket sahibi dahil tüm kullanıcılar için geçerlidir.
Geliştirme ve araç entegrasyonu
Konsolun ötesinde, paket politikalarını grafiksel araçlar, CLI araçları ve SDK'lar kullanarak yapılandırabilirsiniz.
-
ossbrowser grafiksel aracını kullanma
ossbrowser, paket düzeyindeki politika işlemleri için konsol benzeri görsel bir deneyim sağlar. ossbrowser uygulamasını yükleyin ve oturum açın, ardından politikayı yapılandırın.
-
ossutil komut satırı aracını kullanma
Yetkilendirme politikasını put-bucket-policy komutunu kullanarak ayarlayın.
NotBir vektör paketi için yetkilendirme politikası ayarlamak üzere
ossutil vectors-api put-bucket-policykomutunu çalıştırın. -
SDK kullanma
Java SDK, Python SDK, Go SDK ve Node.js SDK gibi SDK'ları kullanarak politikaları yapılandırın. SDK reference desteklenen tüm dilleri kapsar.
-
Doğrudan API çağırma
Paket yetkilendirme politikası ayarlamak için PutBucketPolicy işlemini çağırın.
Kotalar ve sınırlar
Politika boyutu: Bir paket birden fazla Bucket Policy ifadesine sahip olabilir ancak tüm politikaların toplam boyutu 16 KB'yi aşamaz.
Alan uzunluğu: Bir Bucket Policy'deki her alanın uzunluğu 4.095 baytı aşamaz.