Tüm Ürünler
Search
Belge Merkezi

MaxCompute:ACL erişim denetimi

Son Güncelleme:Oct 04, 2026

Projeler ve tablolar gibi MaxCompute nesneleri üzerinde birden fazla kullanıcının çalışmasına olanak tanımanız gerekiyorsa, Access Control List (ACL) kullanarak belirli kullanıcı veya rollere özel izinler verebilirsiniz. Birden çok kullanıcı için izinleri verimli bir şekilde yönetmek amacıyla izinleri bir role verin ve ardından bu rolü kullanıcılara atayın. Bu konuda, MaxCompute'ün desteklediği ACL yetkilendirme komutları açıklanmakta ve örnekler sunulmaktadır.

Arka plan bilgileri

ACL tabanlı erişim denetimi, bir izin listesi yetkilendirme modeli kullanır. Bir kullanıcının veya rolün belirli bir nesne üzerinde belirli eylemleri gerçekleştirmesine açıkça izin verirsiniz. Bu yaklaşım, yetkilendirmeyi basit ve hassas hale getirir.

Bir MaxCompute projesi oluşturduktan sonra, ACL tabanlı erişim denetimi varsayılan olarak etkinleştirilir. Proje sahibi, projede set CheckPermissionUsingACL=true|false; komutunu çalıştırarak bu özelliği etkinleştirebilir veya devre dışı bırakabilir.

ACL tabanlı erişim denetimi aşağıdaki senaryolarda uygulanır.

Senaryo

Açıklama

İzin veren

Giriş noktası

Kullanıcıya izin verme

Belirli bir nesne üzerindeki bir veya daha fazla eylemi doğrudan tek bir kullanıcıya verin.

İzinler listesindeki Desteklenen izin verenler sütununa bakın.

Rollere dayalı olarak kullanıcılara izin verme

Belirli bir nesne üzerindeki bir veya daha fazla eylemi doğrudan bir role verin ve ardından rolü birden çok kullanıcıya atayın. Kullanıcılar, rolün izinlerini devralır.

Rol oluşturma ve kullanıcılara rol atama hakkında daha fazla bilgi için Rol planlama ve Kullanıcıya rol ekleme konularına bakın.

Not

Roller, verimli kullanıcı yönetimi için tasarlanmıştır. Aynı nesne üzerindeki aynı izinleri birden çok role vermeyin.

Ön koşullar

ACL tabanlı erişim denetimini kullanmadan önce aşağıdaki bilgilere sahip olduğunuzdan emin olun:

  • İzin alanın hesap adı veya rol adı. Kullanıcı veya rol MaxCompute projesine eklenmiş olmalıdır. Hesap formatları şu şekildedir: Alibaba Cloud hesabı ALIYUN$<account_id> formatındadır, RAM kullanıcı hesabı RAM$<account_id>:<RAM user UID> formatındadır ve RAM rolü RAM$<account_id>:role/<RAM role name> formatındadır.

    Hesap veya rol adlarını almak için MaxCompute istemcisinde list users; veya list roles; komutunu çalıştırabilirsiniz.

    Kullanıcı veya rol eklemek için Kullanıcı planlama ve yönetimi veya Rol planlama konularına bakın.

  • Nesne türü, nesne adı ve verilecek eylemler.

    Nesne türleri ve eylemler hakkında daha fazla bilgi için MaxCompute izinleri konusuna bakın.

Sınırlamalar

ACL tabanlı erişim denetimi için aşağıdaki sınırlamalar geçerlidir:

  • İzinleri yalnızca mevcut nesnelerdeki mevcut kullanıcılara veya rollere verebilirsiniz. Bu, aynı ada sahip bir nesnenin silinip yeniden oluşturulmasından kaynaklanan güvenlik risklerini önler.

  • ACL tabanlı erişim denetimi, [with grant option] yan tümcesi ile yetkilendirmeyi desteklemez. Örneğin, A kullanıcısı B kullanıcısına bir nesneye erişim izni verirse, B kullanıcısı bu izni C kullanıcısına veremez.

  • ACL yetkilendirmesi bir izin listesi modeli kullanır ve engelleme listesi modelini desteklemez.

Kullanım notları

ACL tabanlı erişim denetimini kullanırken aşağıdaki hususlara dikkat edin:

  • Bir nesneyi sildiğinizde, MaxCompute bununla ilişkili tüm ACL izinlerini otomatik olarak iptal eder.

  • Bir kullanıcı kaldırıldığında, izinleri korunur. Kullanıcı daha sonra projeye tekrar eklenirse önceki izinleri otomatik olarak geri yüklenir. Bir kullanıcının izinlerini kalıcı olarak temizlemek için Kaldırılan bir kullanıcının kalan izinlerini temizleme konusuna bakın.

Söz dizimi

ACL tabanlı erişim denetimi komutları aşağıdaki söz dizimini kullanır:

  • ACL izinleri verme

    grant <actions> on <object_type> <object_name> 
    [(<column_list>)] to <subject_type> <subject_name> 
    [privilegeproperties("conditions" = "<conditions>", "expires"="<days>")];
  • ACL izinlerini iptal etme

    revoke <actions> on <object_type> <object_name> 
    [(<column_list>)] from <subject_type> <subject_name>;
  • Sütun düzeyinde erişim denetimi

    grant <actions> on table <table_name> (<column_list>) to <subject_type> <subject_name>;
    revoke <actions> on table <table_name> (<column_list>) from <subject_type> <subject_name>;

Aşağıdaki tabloda parametreler açıklanmaktadır.

Parametre

Gerekli

Açıklama

actions

Evet

Verilecek eylemler. Tek bir 'grant' ifadesinde bir veya daha fazla eylem belirtebilirsiniz.

Birden fazla eylemi virgül (,) ile ayırın. Geçerli eylemlerin listesi için MaxCompute izinleri konusuna bakın.

object_type

Evet

İzin verilecek nesnenin türü. Tek bir ifadede yalnızca bir nesne türü belirtebilirsiniz.

Geçerli nesne türlerinin listesi için MaxCompute izinleri konusuna bakın.

object_name

Evet

Nesnenin adı. Adı aşağıdaki şekilde bulabilirsiniz:

  • Proje adı: MaxCompute konsolu'nda oturum açın. Sol üst köşedeki bölgeyi değiştirdikten sonra proje adını Projects sekmesinde bulabilirsiniz. Nesne türü proje olduğunda, yalnızca mevcut projeyle ilgili bilgileri sorgulayabilirsiniz.

  • Tablo adı: Tablo veya görünüm adını almak için MaxCompute istemcisinde show tables; komutunu çalıştırın.

  • Model adını almak için MaxCompute istemcisinde show models; komutunu çalıştırın.

  • Kaynak adını almak için MaxCompute istemcisinde list resources; komutunu çalıştırın.

  • İşlev adını almak için MaxCompute istemcisinde list functions; komutunu çalıştırın.

  • Örnek kimliğini almak için MaxCompute istemcisinde show instances; komutunu çalıştırın.

Nesne adında joker karakter olarak yıldız işareti () kullanabilirsiniz. Örneğin, table taobao, adları taobao ile başlayan tüm tabloları gösterir.

Not

Joker karakter (*) yalnızca ROLE için izin verirken kullanılabilir. USER için izin verirken joker karakterler desteklenmez.

column_list

Hayır

Bu parametre yalnızca object_type tablo olduğunda ve sütun düzeyinde erişim denetimi uygulamak istediğinizde gereklidir. Bir veya daha fazla sütun belirtebilirsiniz. Birden fazla sütun adını virgül (,) ile ayırın.

Not

Bu parametre, belirtilen sütunlardaki Describe, Select, Alter, Update, Drop, ShowHistory ve ALL izinlerini kontrol eder. Bir sütun için duyarlılık düzeyi yapılandırılmışsa, duyarlılık etiketlerine göre hassas verilere erişimi kontrol etmek için Etiket tabanlı erişim denetimi kullanabilirsiniz.

privilegeproperties

conditions

Hayır

İstek kaynağı ve erişim yöntemi gibi niteliklere göre izinleri kontrol eder. Formatı "<var_name> <Operation> Constant" and "<var_name> <Operation> Constant" and ... şeklindedir. Desteklenen var_name ve Operation değerlerinin listesi için Koşullar bölümüne bakın.

days

Hayır

İznin sona ermesine kadar geçen gün sayısı. Bu parametreyi belirtmezseniz izin süresiz olur. Bu parametreyi belirtirseniz, MaxCompute süre dolduktan sonra izin kaydını otomatik olarak kaldırır.

subject_type

Evet

İzin alanın türü. Geçerli değerler:

  • USER: Bir Alibaba Cloud hesabı veya RAM kullanıcısı.

  • ROLE: Bir rol.

subject_name

Evet

İzin alanın kullanıcı hesabı veya rol adı. Her izin verme işlemi için yalnızca bir kullanıcı veya rol belirtebilirsiniz. Formatlar:

  • Alibaba Cloud hesabı: ALIYUN$<account_id>.

  • RAM kullanıcısı: RAM$<account_id>:<RAM user UID>.

  • RAM rolü: RAM$<account_id>:role/<RAM role name>.

Kullanıcı hesabını veya rol adını almak için MaxCompute istemcisinde list users; veya list roles; komutunu çalıştırabilirsiniz.

Koşullar

Aşağıdaki tabloda, conditions için desteklenen var_name ve Operation değerleri listelenmektedir.

var_name

Tür

Operation

Açıklama

acs:UserAgent

STRING

  • StringEquals: =

  • StringNotEquals: <>

  • StringLike: like

  • StringNotLike: not like

İstekte bulunan istemcinin User-Agent değeri.

acs:Referer

STRING

İsteğin HTTP Referer değeri.

acs:SourceIp

IP adresi

  • IpAddress: in (...)

  • NotIpAddress: not in (...)

İstekte bulunan istemcinin IP adresi.

acs:SecureTransport

BOOLEAN

  • True

  • False

İsteğin HTTPS gibi güvenli bir kanal üzerinden gönderilip gönderilmediğini belirtir.

acs:CurrentTime

DATEANDTIME

  • DateEquals: =

  • DateNotEquals: <>

  • DateLessThan: <

  • DateLessThanEquals: <=

  • DateGreaterThan: >

  • DateGreaterThanEquals: >=

Web sunucusunun isteği aldığı zaman, ISO 8601 formatında (örneğin 2012-11-11T23:59:59Z).

Örnekler

Bob@aliyun.com (hesap kimliği: 5527xxxxxxxx5788) kullanıcısının test_project_a projesinin proje sahibi olduğunu ve Allen (UID: 1652xxxxxxxxxx1538), Alice (UID: 2763xxxxxxxxxx1649) ile Tom (UID: 3874xxxxxxxxxx1850) kullanıcılarının Bob@aliyun.com altında RAM kullanıcıları olduğunu varsayalım. Aşağıdaki örneklerde, MaxCompute istemcisi kullanılarak yetkilendirme işlemleri gösterilmektedir.

  • Örnek 1: Kullanıcıya izin verme

    test_project_a projesinde sale_detail tablosunu oluşturun ve Allen kullanıcısına tabloda Describe (meta verileri okuma) ve Select (verileri okuma) izinlerini verin. Aşağıda örnek komutlar sağlanmıştır.

    -- Bob switches to the test_project_a project.
    use test_project_a; 
    --Create a partitioned table named sale_detail.
    create table if not exists sale_detail
    (
    shop_name     string,
    customer_id   string,
    total_price   double
    )
    partitioned by (sale_date string, region string);
    --Add the user Allen as a project member.
    add user RAM$5527xxxxxxxx5788:1652xxxxxxxxxx1538;
    --Grant permissions to Allen.
    grant Describe, Select on table sale_detail to USER RAM$5527xxxxxxxx5788:1652xxxxxxxxxx1538;
    --View the permissions granted to Allen.
    show grants for RAM$5527xxxxxxxx5788:1652xxxxxxxxxx1538; 
    --The authorization result is as follows.
    Authorization Type: ACL
    [user/RAM$5527xxxxxxxx5788:1652xxxxxxxxxx1538]
    A       projects/test_project_a/tables/sale_detail: Describe | Select
  • Örnek 2: Kullanıcıya sütun düzeyinde izinler verme

    Örnek 1'de oluşturulan sale_detail tablosunu kullanarak, Alice kullanıcısına sale_detail tablosundaki shop_name ve customer_id sütunları üzerinde tüm izinleri verin. Aşağıda örnek komutlar sağlanmıştır.

    -- Bob switches to the test_project_a project.
    use test_project_a; 
    --Add user Alice as a project member.
    add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
    --Grant column-level permissions to Alice.
    grant All on table sale_detail (shop_name, customer_id) to USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
    --View the permissions granted to Alice.
    show grants for RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649; 
    --The authorization result is as follows.
    Authorization Type: ACL
    [user/RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649]
    A       projects/test_project_a/tables/sale_detail/customer_id: All
    A       projects/test_project_a/tables/sale_detail/shop_name: All
  • Örnek 3: Kullanıcılardan izinleri iptal etme

    Örnek 1 ve Örnek 2'ye dayanarak, Allen ve Alice kullanıcılarından izinleri iptal edin. Aşağıda örnek komutlar sağlanmıştır.

    -- Bob switches to the test_project_a project.
    use test_project_a; 
    --Revoke the permissions from Allen.
    revoke Describe, Select on table sale_detail (shop_name, customer_id) from USER RAM$5527xxxxxxxx5788:1652xxxxxxxxxx1538;
    --Revoke the permissions from Alice.
    revoke All on table sale_detail (shop_name, customer_id) from USER RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
    --Check Allen's permissions after revocation. The Describe and Select permissions are removed from the permission list.
    show grants for RAM$5527xxxxxxxx5788:1652xxxxxxxxxx1538; 
    --Check Alice's permissions after revocation. The All permission is removed from the permission list.
    show grants for RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649; 
  • Örnek 4: Bir rol kullanarak birden çok kullanıcıya aynı izinleri verme

    Alice, Tom ve başka bir Alibaba Cloud hesabı olan Lily@aliyun.com (hesap kimliği: 5638xxxxxxxx6899) kullanıcılarına test_project_a projesinde örnekler, kaynaklar, işlevler ve tablolar oluşturma ve tüm nesne türlerini listeleme izinlerini verin. Aşağıda örnek komutlar sağlanmıştır.

    -- Bob switches to the test_project_a project.
    use test_project_a; 
    --Add the users Alice, Tom, and Lily@aliyun.com as project members.
    add user RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
    add user RAM$5527xxxxxxxx5788:3874xxxxxxxxxx1850;
    add user ALIYUN$5638xxxxxxxx6899;
    --Create the Worker role.
    create role Worker; 
    --Assign the Worker role to the users.
    grant Worker TO RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649; 
    grant Worker TO RAM$5527xxxxxxxx5788:3874xxxxxxxxxx1850; 
    grant Worker TO ALIYUN$5638xxxxxxxx6899; 
    --Grant the Worker role the permissions to create instances, resources, functions, and tables, and to list all object types in the test_project_a project.
    grant CreateInstance, CreateResource, CreateFunction, CreateTable, List on project test_project_a TO ROLE Worker;
    --View the permissions for the user Lily.
    show grants for ALIYUN$5638xxxxxxxx6899; 
    --The following authorization result indicates that the user Lily has the specified permissions.
    [roles]
    worker
    
    Authorization Type: ACL
    [role/worker]
    A       projects/test_project_a: CreateTable | CreateResource | CreateInstance | CreateFunction | List
  • Örnek 5: Birden çok kullanıcıdan aynı rol tabanlı izinleri iptal etme

    Örnek 4'e dayanarak, Alice, Tom ve Lily@aliyun.com kullanıcılarından izinleri iptal edin. Aşağıda örnek komutlar sağlanmıştır.

    -- Bob switches to the test_project_a project.
    use test_project_a; 
    --Revoke the Worker role from the users Alice, Tom, and Lily@aliyun.com.
    revoke Worker from RAM$5527xxxxxxxx5788:2763xxxxxxxxxx1649;
    revoke Worker from RAM$5527xxxxxxxx5788:3874xxxxxxxxxx1850;
    revoke Worker from ALIYUN$5638xxxxxxxx6899;
    --Check Lily's permissions after revocation. The permission list no longer includes the Worker role.
    show grants for ALIYUN$5638xxxxxxxx6899; 

Sonraki adımlar

ACL yetkilendirmesinin nasıl çalıştığını anladığınızda, iş ihtiyaçlarınıza göre izinleri yönetebilirsiniz: