Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu öğreticide, SQL kullanarak Unity Kataloğu'nda satır filtresi ve sütun maskesi ABAC ilkelerini yapılandırma gösterilmektedir. Katalog Gezgini kullanıcı arabirimi tabanlı sürüm için bkz . Öğretici: ABAC'yi Yapılandırma.
Bu örnekte analiz ekibi AB müşteri kayıtlarına erişemez ve SSN'ler her zaman maskelenir. Veri paylaşımını onaylayan müşterilerin tam e-postaları gösterilir. Diğerleri yalnızca maskelenmiş bir sürüm görür.
Bu eğitim aşağıdaki adımları içerir:
- İdare edilen etiketler oluşturma
- Unity Catalog için bir katalog, şema ve tablo oluşturun
- Sütunlara yönetilen etiketler uygulayın
- AB adreslerini algılamak için UDF oluşturma
- Satır filtresi ilkesi oluştur
- Satır filtresini test edin
- SSN'leri maskeleme amacıyla UDF oluşturma
- Sütun maskesi ilkesi oluşturma
- Sütun maskesini test edin
Bu adımları tamamladıktan sonra, isteğe bağlı olarak öğreticiyi koşullu e-posta maskeleme (10-12 arası adımlar) ile genişletebilirsiniz.
Prerequisites
- Databricks Runtime 16.4 veya üzeri ya da sunucusuz işlem.
- Hesap yöneticisi veya çalışma alanı yöneticisi izinleri (idare edilen etiketler oluşturmak için).
-
MANAGEüzerinde hedef katalog veya şemada izin. -
EXECUTEUDF'lerde.
Eski çalışma zamanlarını çalıştıran işlem, ABAC tarafından güvenliği sağlanan tablolara erişemez.
1. Adım: İdare edilen etiketler oluşturma
İdare edilen etiketler , hesap düzeyinde tanımlanan anahtar-değer çiftleridir. ABAC ilkeleri, hangi sütunların filtreleneceği veya maskeleneceği bulmak için bunları kullanır. Bu öğreticide iki yönetilen etiket oluşturacaksınız:
-
piiİzin verilen üç değere sahip bir etiket:ssn,addressveemail -
consentOnay sütunlarını tanımlamak için yalnızca anahtar etiketi (izin verilen değer yok)
yönetilen etiket oluşturmak için, hesap düzeyinde yönetilen etiket CREATE iznine sahip olmanız gerekir. Hesap ve çalışma alanı yöneticileri varsayılan olarak CREATE'ye sahiptir.
- Azure Databricks çalışma alanınızda
Katalog'a gidin.
-
İdare düğmesi.
- Açılan menüde Yönetilen Etiketler'e tıklayın.
- yönetilen etiket oluştur'a tıklayın.
- Etiket anahtarı için girin
pii. - İdare edilen etiket için bir açıklama girin.
- İzin verilen değerler için şunu girin:
ssn,addressveemail. Bu etiket anahtarına yalnızca bu değerler atanabilir. - Oluştur'a tıklayın.
- anahtarıyla
consentikinci bir yönetilen etiket oluşturmak için 4-8 arasındaki adımları yineleyin. İzin verilen değerleri boş bırakın (yalnızca anahtar etiketi).
Uyarı
Etiket verileri düz metin olarak depolanır ve genel olarak çoğaltılabilir. Kaynaklarınızın güvenliğini tehlikeye atabilecek etiket adlarını, değerleri veya tanımlayıcıları kullanmayın. Örneğin, kişisel veya hassas bilgiler içeren etiket adlarını, değerlerini veya tanımlayıcılarını kullanmayın.
2. Adım: Müşteriler tablosunu oluşturma
Müşteri profilleriyle bir katalog, şema ve tablo oluşturun. Sütun has_consent daha sonra koşullu e-posta maskeleme için kullanılır. OnayTRUE () veren müşterilerin tam e-postaları gösterilir.
Databricks Runtime 16.4 veya üzeri üzerinde işlem için ekli bir not defterinde aşağıdaki komutları çalıştırın:
-- Create catalog (if not already exists)
CREATE CATALOG IF NOT EXISTS abac_tutorial;
USE CATALOG abac_tutorial;
-- Create schema
CREATE SCHEMA IF NOT EXISTS customers;
USE SCHEMA customers;
CREATE OR REPLACE TABLE profiles (
first_name STRING,
last_name STRING,
email STRING,
phone_number STRING,
home_address STRING,
ssn_number STRING,
has_consent BOOLEAN
);
INSERT INTO profiles (first_name, last_name, email, phone_number, home_address, ssn_number, has_consent)
VALUES
('John', 'Doe', 'john.doe@example.com', '123-456-7890', '123 Main St, NY', '123-45-6789', TRUE),
('Jane', 'Smith', 'jane.smith@example.com', '234-567-8901', '456 Oak St, CA', '234-56-7890', FALSE),
('Alice', 'Johnson', 'alice.j@example.com', '345-678-9012', '789 Pine St, TX', '345-67-8901', TRUE),
('Bob', 'Brown', 'bob.brown@example.com', '456-789-0123', '321 Maple St, FL', '456-78-9012', FALSE),
('Charlie', 'Davis', 'charlie.d@example.com', '567-890-1234', '654 Cedar St, IL', '567-89-0123', TRUE),
('Emily', 'White', 'emily.w@example.com', '678-901-2345', '987 Birch St, WA', '678-90-1234', FALSE),
('Frank', 'Miller', 'frank.m@example.com', '789-012-3456', '741 Spruce St, WA', '789-01-2345', TRUE),
('Grace', 'Wilson', 'grace.w@example.com', '890-123-4567', '852 Elm St, NV', '890-12-3456', TRUE),
('Hank', 'Moore', 'hank.moore@example.com', '901-234-5678', '963 Walnut St, CO', '901-23-4567', FALSE),
('Ivy', 'Taylor', 'ivy.taylor@example.com', '012-345-6789', '159 Aspen St, AZ', '012-34-5678', TRUE),
('Liam', 'Connor', 'liam.c@example.com', '111-222-3333', '12 Abbey Street, Dublin, Ireland EU', '111-22-3333', TRUE),
('Sophie', 'Dubois', 'sophie.d@example.com', '222-333-4444', '45 Rue de Rivoli, Paris, France Europe', '222-33-4444', FALSE),
('Hans', 'Müller', 'hans.m@example.com', '333-444-5555', '78 Berliner Str., Berlin, Germany E.U.', '333-44-5555', TRUE),
('Elena', 'Rossi', 'elena.r@example.com', '444-555-6666', '23 Via Roma, Milan, Italy Europe', '444-55-6666', FALSE),
('Johan', 'Andersson', 'johan.a@example.com', '555-666-7777', '56 Drottninggatan, Stockholm, Sweden EU', '555-66-7777', TRUE);
3. Adım: Sütunlara yönetilen etiketler ekleme
ssn_number, home_address ve email sütunlarını pii yönetilen etiketle etiketleyin. ABAC ilkeleri, sütunları ada göre değil etikete göre eşleştirer.
Sütun has_consent, yönetilen etiketle consent etiketlenmiştir. Bu, 11. Adım'da has_consent aracılığıyla UDF'ye geçen, onay farkındalığına sahip maskeleme ilkesi için gereklidir.
ALTER TABLE abac_tutorial.customers.profiles
ALTER COLUMN ssn_number
SET TAGS ('pii' = 'ssn');
ALTER TABLE abac_tutorial.customers.profiles
ALTER COLUMN home_address
SET TAGS ('pii' = 'address');
ALTER TABLE abac_tutorial.customers.profiles
ALTER COLUMN email
SET TAGS ('pii' = 'email');
ALTER TABLE abac_tutorial.customers.profiles
ALTER COLUMN has_consent
SET TAGS ('consent' = '');
4. Adım: AB adreslerini algılamak için UDF oluşturma
Bu UDF'ye pii = address etiketli her sütunun değeri iletilir ve şunu döndürür:
-
FALSEadresEU,E.U.veyaEuropeiçeriyorsa, satır gizlenir. -
TRUEaksi takdirde, satır gösterilir.
CREATE OR REPLACE FUNCTION is_not_eu_address(address STRING)
RETURNS BOOLEAN
RETURN (
SELECT CASE
WHEN LOWER(address) LIKE '%eu%'
OR LOWER(address) LIKE '%e.u.%'
OR LOWER(address) LIKE '%europe%'
THEN FALSE
ELSE TRUE
END
);
Note
Bu, gösterim amacıyla basitleştirilmiş bir denetimdir. Üretimde, bölgeyi belirlemek için ülke kodu sütunu veya arama tablosu gibi daha sağlam bir yöntem kullanın.
5. Adım: Satır filtresi ilkesi oluşturma
İlke oluşturmak için, nesne üzerinde veya nesnenin sahipliği üzerinde MANAGE'a sahip olmalısınız. Bir ilkeye UDF eklemek için UDF üzerinde EXECUTE yetkisine sahip olmanız gerekir.
CREATE POLICY hide_eu_customers
ON SCHEMA abac_tutorial.customers
ROW FILTER is_not_eu_address
TO `account users`
FOR TABLES
MATCH COLUMNS has_tag_value('pii', 'address') AS addr_col
USING COLUMNS (addr_col);
Ayrıca, Katalog Gezgini kullanıcı arabirimi aracılığıyla da ilke oluşturabilirsiniz. Ayrıntılar için bkz. Satır filtresi ve sütun maskesi ilkelerini oluşturma ve yönetme .
6. Adım: Satır filtresini test edin
Satır filtresi ilkesinin çalıştığını doğrulamak için aşağıdaki sorguyu çalıştırın.
SELECT * FROM abac_tutorial.customers.profiles;
Yalnızca AB dışı yerleşik 10 satır döndürülür. Beş AB müşterisi (Liam, Sophie, Hans, Elena ve Johan) gizlidir.
7. Adım: SSN'leri maskeleme amacıyla UDF oluşturma
Bu UDF, kendisine iletilen tüm SSN değerleri için tamamen sansürlenmiş bir yer tutucu döndürür.
CREATE OR REPLACE FUNCTION redact_ssn(ssn STRING)
RETURNS STRING
RETURN '***-**-****';
8. Adım: Sütun maskesi ilkesi oluşturma
pii = ssn etiketli tüm sütunları hedef alan ve her birine redact_ssn işlevini uygulayan bir ilke oluşturun.
CREATE POLICY redact_ssn_policy
ON SCHEMA abac_tutorial.customers
COLUMN MASK redact_ssn
TO `account users`
FOR TABLES
MATCH COLUMNS has_tag_value('pii', 'ssn') AS ssn_col
ON COLUMN ssn_col;
9. Adım: Sütun maskesini test edin
Hem satır filtresinin hem de sütun maskesinin etkin olduğunu doğrulamak için aşağıdaki sorguyu çalıştırın.
SELECT * FROM abac_tutorial.customers.profiles;
SSN'ler artık ***-**-**** olarak döndürülmektedir. Satır filtresi de etkin olduğundan yalnızca AB dışı yerleşikler döndürülür.
Genişletme: Koşullu e-posta maskeleme
Aşağıdaki adımlar, onay farkındalığına sahip e-posta maskeleme ile öğreticiyi genişletir. Opt-in'yi kabul eden müşterilerin (has_consent = TRUE) tam e-postaları gösterilir; diğerleri yalnızca ilk karakteri ve etki alanını görür.
10. Adım: Onay farkındalığı olan e-posta maskeleme UDF'si oluşturma
Bu UDF iki bağımsız değişken (parametre) alır:
-
email: eşleşen sütundaki gerçek e-posta değeri -
consent: aynı satırdakihas_consentsütunun değeri
CREATE OR REPLACE FUNCTION mask_email_by_consent(email STRING, consent BOOLEAN)
RETURNS STRING
RETURN CASE
WHEN consent = TRUE THEN email
ELSE CONCAT(LEFT(email, 1), '***@', SUBSTRING_INDEX(email, '@', -1))
END;
11. Adım: Koşullu e-posta maskeleme ilkesini oluşturma
Bu ilke etiketlenmiş pii = email sütunları hedefler ve has_consent sütununu UDF'ye geçirir.
Note
Sütun, has_consentconsent yönetilen etiketle etiketlenmiştir. Bu gereklidir çünkü USING COLUMNS yalnızca aracılığıyla MATCH COLUMNSeşleşen sütunlara başvurabilir. Maskelenmiyor olsa da has_consent, politikanın değerini UDF'ye geçirebilmesi için etiketlenmesi gerekir.
CREATE POLICY mask_email_by_consent_policy
ON SCHEMA abac_tutorial.customers
COLUMN MASK mask_email_by_consent
TO `account users`
FOR TABLES
MATCH COLUMNS has_tag_value('pii', 'email') AS email_col,
has_tag('consent') AS consent_col
ON COLUMN email_col
USING COLUMNS (consent_col);
12. Adım: Koşullu e-posta maskeleme test etme
Üç ilkenin de birlikte çalıştığını doğrulamak için aşağıdaki sorguyu çalıştırın.
SELECT * FROM abac_tutorial.customers.profiles;
has_consent = TRUE olan müşterilerin tam e-postaları gösterilir.
has_consent = FALSE olan müşteriler maskelenmiş bir sürüm görür. SSN'ler tamamen maskelenmiş olarak kalır ve yalnızca AB üyesi olmayan müşteriler döndürülür.
| ilk ad | izin_var | e-posta | Sosyal Güvenlik Numarası |
|---|---|---|---|
| John | TRUE | john.doe@example.com | ***-**-**** |
| Jane | FALSE | j***@example.com | ***-**-**** |
| Alice | TRUE | alice.j@example.com | ***-**-**** |
| Bob | FALSE | b***@example.com | ***-**-**** |
| Charlie | TRUE | charlie.d@example.com | ***-**-**** |
| Emily | FALSE | e***@example.com | ***-**-**** |
| Frenk | TRUE | frank.m@example.com | ***-**-**** |
| Zarafet | TRUE | grace.w@example.com | ***-**-**** |
| Hank | FALSE | h***@example.com | ***-**-**** |
| Sarmaşık | TRUE | ivy.taylor@example.com | ***-**-**** |
Özet
Bu öğreticide üç ABAC modeli gösterildi:
- Satır filtreleme: yönetilen etiketlerle eşleşen sütun değerlerine göre satırları gizleme
- Sütun maskeleme: yönetilen etiketlerle eşleşen sütunları maskeleme
-
Koşullu maskeleme: Bağlam sütununu etiketleyip aracılığıyla UDF'ye geçirerek sütunu aynı satırdaki başka bir sütunun değerine göre maskeleme
USING COLUMNS
Temizleme
Bu öğreticide oluşturulan tüm nesneleri kaldırmak için aşağıdakileri çalıştırın. Koşullu e-posta maskeleme adımlarını atladıysanız ve DROP POLICY mask_email_by_consent_policyDROP FUNCTION mask_email_by_consent deyimleri başarısız olur ve bu beklenen bir durumdur.
DROP POLICY hide_eu_customers ON SCHEMA abac_tutorial.customers;
DROP POLICY redact_ssn_policy ON SCHEMA abac_tutorial.customers;
DROP POLICY mask_email_by_consent_policy ON SCHEMA abac_tutorial.customers;
DROP FUNCTION IF EXISTS abac_tutorial.customers.is_not_eu_address;
DROP FUNCTION IF EXISTS abac_tutorial.customers.redact_ssn;
DROP FUNCTION IF EXISTS abac_tutorial.customers.mask_email_by_consent;
DROP TABLE IF EXISTS abac_tutorial.customers.profiles;
DROP SCHEMA IF EXISTS abac_tutorial.customers CASCADE;
pii ve consent yönetilen etiketleri kaldırmak için Katalog Gezgini kullanıcı arabirimini kullanın.