Öğretici: Bir yapay zeka ajanının erişim kapsamını RBAC ile belirleyin

Bir yapay zeka ajanının belirli bir görev için ihtiyaç duyduğu verilere ve kaynaklara erişimini sınırlamak amacıyla rol tabanlı erişim kontrolü (RBAC) kullanın. Temsilciye bir role atanmış bir OAuth tokenı verin. Bu token ile yapılan talepler, kimlik doğrulama yapan kullanıcının veya hizmet sorumlusunun daha geniş izinleri yerine rolün izinlerini kullanır.

Scenario

Bir yapay zeka destek temsilcisi için bilet özetleri ve durum gereklidir, ancak kişisel tanımlayıcı bilgiler (PII) içeren müşteri iletişim bilgileri gerekli değildir. Kimlik doğrulama hizmet sorumlusu daha geniş erişime sahiptir ve her iki veri setini de okuyabilir.

Bu örnekte, support.tickets şema müşteriye ait kişisel olarak tanımlanabilir bilgiler (PII) olmadan bilet özetleri ve durum içerir. Müşteri iletişim bilgileri ayrı olarak saklanır support.customers.contact_details.

role-support-agent oluşturursunuz, support.tickets için okuma erişimi verirsiniz ve servis yöneticisine bunun üzerinde üstlenme izni verirsiniz. Kapsamı o rolle sınırlandırılmış bir token ile temsilci destek biletlerini okuyabilir ama müşteri iletişim bilgilerine erişemez.

Rol, ana gruplardan veri ayrıcalıklarını devralabilir ve katalog veya şema izinleri altındaki tüm tablolara uygulanabilir. Bu örnekte, bu grantların role müşteri iletişim tablosuna erişim sağlamadığını doğrulayın. Bkz . Ayrıcalık devralma. Paylaşılan izinlerin değiştirilmesi diğer kullanıcıları ve rolleri etkiler, bu yüzden diğer kullanıcıların erişimini kaldırmak yerine test çalışma alanı kullanın.

Bu eğitim, sizin sağladığınız OAuth erişim tokenını kabul eden özel, kendi kendine barındırılan veya üçüncü taraf ajanlar içindir. Databricks Uygulamalarında konuşlandırılan ajanlar için, yerleşik uygulama yetkilendirmesini veya kullanıcı yetkilendirmesini kullanın. Bkz. Aracılar için kimlik doğrulaması.

Prerequisites

  • RBAC etkin olan Unity Catalog etkinleştirilmiş bir çalışma alanı. Bkz. RBAC'yi etkinleştirme.
  • Rolü oluşturmak, Assume izni vermek ve bunu çalışma alanına atamak için hesap yöneticisi veya çalışma alanı yöneticisi izinleri gerekir. Bkz . Grupları kimler yönetebilir?.
  • Kataloğun sahipliği veya support kataloğu üzerinde MANAGE hakkı.
  • Çalışma alanı yöneticisi izinleri veya örnekte kullanılan SQL deposunda Yönetebilir izni.
  • Mevcut tablolar support.tickets.open_cases ve support.customers.contact_details. Uydurma test verilerini kullanın ve gerekirse metin boyunca kendi isimlerinizi kullanın.
  • Çalışma alanına atanmış, Databricks SQL erişimi olan, depoda kullanılabilen ve her iki tabloyu sorgulama iznine sahip bir hizmet sorumlusu. Makineden makineye (M2M) kimlik doğrulama için sql kapsamına izin veren bir OAuth sırrı gerekir. Bkz 1. Adım: OAuth gizli anahtarı oluşturma.
  • curl token talep edip test edebileceğiniz güvenilir bir ortamda.
  • Rol altındaki temsilcinin faaliyetini doğrulamak için system.access.audit erişimi olan bir denetim okuyucusu. Bkz. Denetim ilişkilendirmesini doğrulama.

Bu OAuth M2M örneği için Azure Databricks tarafından yönetilen bir hizmet sorumlusu kullanın. Microsoft Entra ID yönetilen hizmet sorumluları farklı bir kimlik doğrulama kurulumu kullanır. Bkz. OAuth ile Azure Databricks'e hizmet sorumlusu erişimini yetkilendirme.

1. Adım: Rolü oluşturma

Bu eğitim için, rol olarak hizmet edecek boş bir hesap grubu oluşturun.

Hesap konsolu

  1. Hesap yöneticisi olarak hesap konsolunda oturum açın.
  2. Kenar çubuğunda Kullanıcı yönetimi'ne tıklayın.
  3. Gruplar sekmesinde Grup ekle'ye tıklayın.
  4. role-support-agent girin. Üye eklemeyin.
  5. Onayla'yı tıklatın.
  6. Grubu çalışma alanına Databricks SQL erişimiyle atayın. Bkz. Çalışma alanına grup atama.

Çalışma alanı yöneticisi ayarları

  1. Bir çalışma alanı yöneticisi olarak, test çalışma alanına giriş yapın.
  2. Üst çubukta kullanıcı adınıza tıklayın ve Ayarlar'ı seçin.
  3. Kimlik ve erişim sekmesine tıklayın.
  4. Gruplar'ın yanında Yönet'e tıklayın.
  5. Grup Ekle'ye tıklayın, ardından Yeni Ekle.
  6. girin ve role-support-agent'ni seçin.
  7. Ekle'yi tıklatın. Üye eklemeyin.

Bu aynı zamanda grubu çalışma alanına atar ve size Yönet izni verir.

Databricks SQL erişim hakkı, dashboardlar, sorgular ve SQL depoları dahil olmak üzere Databricks SQL özelliklerine erişim sağlar. Örnekte SQL sorguları kullanılır. Ajanınızın ayrıca notebook'lar, Jobs, modeller veya pipeline gibi temel workspace özelliklerine ihtiyacı varsa, Workspace erişimi verin. Bkz. Erişim yetkilendirmeleri. Veri ayrıcalıklarını ve depo izinlerini Step 2'de yapılandırıyorsunuz.

Bu örnekte, service principal’i üye olarak eklemek yerine Assume iznini ayrı olarak verirsiniz. Üyelik ayrıca hizmet sorumlusunun kendi kimliğine grubun izinlerini ekler.

Adım 2: Role destek biletlerine erişim tanıyın

Katalog sahibiyseniz veya support üzerinde MANAGE yetkisine sahip bir kullanıcıysanız, şunu çalıştırın:

GRANT USE CATALOG ON CATALOG support TO `role-support-agent`;
GRANT USE SCHEMA, SELECT ON SCHEMA support.tickets TO `role-support-agent`;

Bir çalışma alanı yöneticisi veya depoda Can manage iznine sahip bir kullanıcı olarak, role depoya erişim verin:

  1. Çalışma alanı yan panelinde SQL Warehouses'a tıklayın.
  2. Kebab menüsü simgesine tıklayın. Deponun yanındaki kebab menüsüne tıklayın, ardından İzinler'e tıklayın.
  3. öğesini role-support-agent ile ekleyin.

Şema düzeyindeki SELECT izin, support.tickets içindeki mevcut ve gelecekteki tüm tablolar ve görünümler için geçerlidir. Bu, support.customers veya diğer şemalara erişim izni vermez. Rolü tek bir tabloyla sınırlamak için bunun yerine SELECT yetkisini o tabloda verin. Bkz. Unity Kataloğu'nda ayrıcalıkları yönetme.

Adım 3: Rolü üstlenme izni verin

Hizmet yöneticisine Assume iznini iki yöntemden birini kullanarak verin:

Hesap konsolu

  1. Hesap yöneticisi olarak, hesap konsolunu açın ve Kullanıcı yönetimi'ne tıklayın.
  2. Gruplar sekmesinde role-support-agent öğesine tıklayın.
  3. İzinler sekmesine tıklayın, ardından Erişim ver seçeneğine tıklayın.
  4. hizmet sorumlusunu arayın ve seçin, Assume seçin ve Kaydet'e tıklayın.

Çalışma alanı yöneticisi ayarları

  1. Görev için Yönet iznine sahip bir çalışma alanı yöneticisi olarak, test çalışma alanında Settings>Identity and access bölümünü açın.
  2. Gruplar'ın yanında Yönet'e tıklayın, ardından role-support-agent seçeneğini belirleyin.
  3. İzinler'e tıklayın, sonra Erişim izni verin.
  4. hizmet sorumlusunu arayın ve seçin, Assume seçin ve Kaydet'e tıklayın.

Adım 4: Rol kapsamlı bir belirteç talep edin

Güvenilir token talebi ortamınızda şu ortam değişkenlerini ayarlayın:

  • DATABRICKS_HOST: https:// dahil ve sonunda eğik çizgi olmadan çalışma alanı URL'si.
  • CLIENT_ID ve CLIENT_SECRET: hizmet sorumlusunun uygulama kimliği ve OAuth gizli anahtarı.
  • ROLE_GROUP_ID: role-support-agent sayısal kimliği. Bir hesap yöneticisi bunu hesap konsolunda, grubun URL’sinin sonunda bulabilir. Hesap yöneticileri, çalışma alanı yöneticileri ve grup yöneticileri de grubun bilgilerini id kullanarak alabilir.
  • DATABRICKS_SQL_WAREHOUSE_ID: Step 2'de verilen depo kimliği. Bu, deponun /sql/1.0/warehouses/ ilerler. Bkz. Azure Databricks işlem kaynağı için bağlantı ayrıntılarını alma.

sql parametresi ve assume_group OAuth kapsamıyla çalışma alanı seviyesinde bir token talep edin. Kapsam, token'ı SQL API'leriyle sınırlandırır. Rolün veri ayrıcalıkları, hangi tabloları sorgulayabileceğini belirler. Bkz. Kapsamlı OAuth gizli anahtarları.

Token talep etmek için şunu çalıştırın:

curl --request POST \
  --url "$DATABRICKS_HOST/oidc/v1/token" \
  --user "$CLIENT_ID:$CLIENT_SECRET" \
  --data-urlencode 'grant_type=client_credentials' \
  --data-urlencode 'scope=sql' \
  --data-urlencode "assume_group=$ROLE_GROUP_ID"

DATABRICKS_TOKEN değerini yanıttaki access_token değerine ayarlayın. expires_in değerini, ne zaman değişim talep edileceğini belirlemek için kullanın. Hesap düzeyindeki token talepleri assume_group desteklemez. Bkz. Bir rol üstlenin.

Adım 5: Belirtecin erişimini doğrulayın

Tokeni ajana sağlamadan önce bu kontrolleri güvenilir ortamda çalıştırın.

İlk olarak, hizmet sorumlusunun kendi kimliği için bir token ile bir temel değer elde edin. Step 4’teki isteği assume_group parametresi olmadan tekrarlayın ve DATABRICKS_TOKEN değerini geçici olarak bu token’a ayarlayın. Bu adımda her iki sorguyu da çalıştırın ve başarılı olduklarını doğrulayın. Sonra DATABRICKS_TOKEN rol kapsamlı token'a geri dönüp kontrolleri tekrarlayın.

Destek biletlerini okuyun

Bu isteği rol kapsamlı belirteçle çalıştırın:

curl --request POST \
  --url "$DATABRICKS_HOST/api/2.0/sql/statements" \
  --header "Authorization: Bearer $DATABRICKS_TOKEN" \
  --header 'Content-Type: application/json' \
  --data "{
    \"warehouse_id\": \"$DATABRICKS_SQL_WAREHOUSE_ID\",
    \"statement\": \"SELECT * FROM support.tickets.open_cases LIMIT 10\",
    \"wait_timeout\": \"50s\"
  }"

Sorgu başarılı olur çünkü rol support.tickets öğesini okuyabildiği için. Yanıtın status.state değerinin SUCCEEDED olduğunu kontrol et. Eğer PENDING veya RUNNING ise, aynı token ile sonucu almak için geri dönen statement_id kullanın:

curl --request GET \
  --url "$DATABRICKS_HOST/api/2.0/sql/statements/<statement-id>" \
  --header "Authorization: Bearer $DATABRICKS_TOKEN"

Statement durumu ve sonuç işleme hakkında Statement Execution API: Run SQL on warehouses için bkz.

Müşteriye ait kişisel verilere erişimin reddedildiğini kontrol edin

Aynı rol kapsamlı token ve warehouse kullanarak çalıştırın:

curl --request POST \
  --url "$DATABRICKS_HOST/api/2.0/sql/statements" \
  --header "Authorization: Bearer $DATABRICKS_TOKEN" \
  --header 'Content-Type: application/json' \
  --data "{
    \"warehouse_id\": \"$DATABRICKS_SQL_WAREHOUSE_ID\",
    \"statement\": \"SELECT 1 FROM support.customers.contact_details LIMIT 1\",
    \"wait_timeout\": \"50s\"
  }"

Eğer ifade hâlâ çalışıyorsa, sonucu önceki bölümde açıklandığı gibi alın. Sorgu, hizmet sorumlusunun kendi tokenı ile başarılı olsa da, status.error içinde bir izin hatasıyla başarısız olur. Sadece bir HTTP başarı yanıtı sorgunun başarılı olduğu anlamına gelmez. Eksik bir tablo, süresi dolmuş bir token veya bir depo hatası, rolun veri ayrıcalıklarının doğru yapılandırıldığını kanıtlamaz.

Denetim ilişkilendirmesini kontrol edin

Denetim attıfını doğrulama bölümünde açıklanan erişime sahip bir denetim okuyucusu kullanın. system.access.audit içindeki test sorgusu olaylarını inceleyin: identity_metadata.run_as yetkilendiren rolü tanımlar, run_as_display_namerole-support-agent içerir ve run_by isteği başlatan hizmet sorumlusunu tanımlar. Denetim verileri gün boyunca güncellenir, bu yüzden yakın zamanda ortaya çıkan bir olay hemen görünmeyebilir. Kimlik metaveri başvurusuna bakın.

Adım 6: Ajanı yapılandırmak

Ajanın Azure Databricks istemcisini workspace URL ve doğrulanmış rol kapsamlı token ile yapılandırın. Sadece bu tokenı ajana verin, hizmet yöneticisinin OAuth sırrını veya kapsamsız tokenını değil. Rolle sınırlı token, o tokenla yapılan talepleri sınırlar. Diğer oturumlarda hizmet sorumlusunun izinlerini kaldırmaz.

Python için Databricks SDK'sını kullanan bir ajan için, DATABRICKS_HOST ve DATABRICKS_TOKEN ayarlarını ajanın ortamında yapın, ardından istemciyi başlatın:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

SDK, jetonu ortamdan birleşik kimlik doğrulama kullanarak okur. Erişim tokenı sağlamak, SDK'ya yeni bir token talep etmek için gereken kimlik bilgilerini sağlamaz. Uzun süreli bir ajan için, token süresi dolmadan önce güvenilir bir bileşenin rol kapsamına bağlı bir yedek token talep edip sağlamasını ayarlayın.

İsteğe bağlı: Bir geliştiricinin kimliğini kullanın

Kullanıcı-makine (U2M) kimlik doğrulama ile yerel test için, katılımcı bir geliştiriciye 3. Adım'da olduğu gibi role-support-agent üzerinde Assume izni verin. Geliştirici, Databricks CLI'yi yükleme veya güncelleme bölümünde tanımlandığı gibi Databricks CLI'sini yükler, ardından kendi oturum açma bilgileri ve ayrı bir profil kullanarak kimlik doğrulamasını sağlar:

databricks auth login --host <workspace-url> --profile support-agent

Geliştirici tarayıcıda altındaki role-support-agent seçeneğini seçer ve Devam'e tıklar, ardından o profil için tokenı alır:

databricks auth token --profile support-agent

Geliştirici, Adım 5'teki rol kapsamlı sorgu kontrolleri için geri dönen access_token öğesini DATABRICKS_TOKEN olarak kullanır. Bu talepler için denetim etkinlikleri geliştiriciyi run_by olarak tanımlar. Databricks CLI tarafından iade edilen token süresi dolar. Geliştirici gerektiğinde yeni bir token alır. Bkz. API (OAuth erişim tokenları).

Temizleme

Geçici bir test için, ajanın token yapılandırmasını kaldırın ve işiniz bittiğinde test için oluşturulan Assume iznini geri alın. Rolü silmeden önce, varlıklara sahip olup olmadığını veya diğer iş yükleri tarafından kullanılıp kullanılmadığını kontrol edin.

Sonraki Adımlar

Resource Description
Rol tabanlı erişim denetimi (RBAC) sınırlamaları Rol oynarken hangi özelliklerin desteklenmediğini veya farklı davrandığını kontrol edin.
RBAC rollerini değiştirin Bir rolü üstlenmek için desteklenen diğer yöntemleri kullanın.