Zephyrnet Logosu

AWS Lake Formation ile veri gölünüz ve Amazon Redshift veri paylaşımınız için etiket tabanlı erişim kontrolü uygulayın | Amazon Web Hizmetleri

Tarih:

Veriye dayalı kuruluşlar, verileri bir varlık olarak ele alır ve zamanında öngörüler ve daha iyi iş kararları sağlamak için onu farklı iş kollarında (LOB'ler) kullanır. Birçok kuruluş, çeşitli iş birimlerine dağıtılmış araçlara ve altyapıya sahiptir. Bu, bir veri ambarı ve veri gölünün birçok örneğinde verinin bulunmasına yol açar. modern veri mimarisi ayrı AWS hesaplarında.

Amazon Kırmızıya Kaydırma bilgi paylaşımı Canlı, işlemsel olarak tutarlı verileri tek bir cihazda güvenli bir şekilde paylaşmanıza olanak tanır Amazon Kırmızıya Kaydırma Verileri bir kümeden diğerine kopyalamaya veya taşımaya gerek kalmadan, aynı AWS hesabı içinde, hesaplar arasında ve Bölgeler arasında başka bir Redshift veri ambarıyla veri ambarı. Müşteriler izinlerini tüm varlıklarındaki merkezi bir yerden yönetebilmek istiyor. Daha önce Redshift veri paylaşımlarının yönetimi yalnızca Amazon Redshift ile sınırlıydı ve bu durum, data lake izinlerinizi ve Amazon Redshift izinlerinizi tek bir yerden yönetmenizi zorlaştırıyordu. Örneğin, Amazon Redshift ve veri gölüne ilişkin erişim bilgilerini görüntülemek ve yönetmek için bireysel bir hesaba gitmeniz gerekiyordu. Amazon Basit Depolama Hizmeti (Amazon S3). Bir kuruluş büyüdükçe yöneticiler, yönetişim ve denetim için veri gölleri ve veri ambarları arasındaki veri paylaşımını etkili ve merkezi olarak yönetecek ve ayrıntılı erişim kontrolünü zorunlu kılacak bir mekanizma ister.

Yakın zamanda Amazon Redshift veri paylaşımının entegrasyonunu duyurduk. AWS Göl Oluşumu. Bu özellik sayesinde Amazon Redshift müşterileri artık paylaşımı yönetebilir, erişim politikalarını merkezi olarak uygulayabilir ve LF-Tag'leri kullanarak izinleri etkili bir şekilde ölçeklendirebilir.

Lake Formation, Amazon S3 tarafından desteklenen veri göllerinin merkezi olarak yönetilmesi için popüler bir seçim olmuştur. Artık Amazon Redshift veri paylaşımına yönelik Lake Formation desteğiyle, yeni tasarım modellerinin önünü açıyor ve veri ambarları genelinde yönetişim ve güvenlik duruşunu genişletiyor. Bu entegrasyonla, birleşik ağlar için Amazon Redshift veri paylaşımıyla paylaşılan tablolar ve görünümler üzerinde ayrıntılı erişim denetimi tanımlamak üzere Lake Formation'ı kullanabilirsiniz. AWS Kimlik ve Erişim Yönetimi (IAM) kullanıcıları ve IAM rolleri. Lake Formation ayrıca veritabanları ve tablolar gibi veri kataloğu nesnelerinin yönetimini basitleştirmek ve ölçeklendirmek için kullanılabilecek etiket tabanlı erişim kontrolü (TBAC) de sağlar.

Bu yazıda bu yeni özelliği ve veri gölünüz için TBAC'ı nasıl uygulayacağınızı ve Lake Formation'da Amazon Redshift veri paylaşımınızı tartışacağız.

Çözüme genel bakış

Lake Formation etiket tabanlı erişim kontrolü (LF-TBAC) benzerleri gruplandırmanıza olanak tanır AWS Tutkal Data Catalog kaynaklarını bir araya getirin ve bir LF-Tag ifadesi kullanarak izin verme veya iptal etme politikasını tanımlayın. LF Etiketleri hiyerarşiktir; bir veritabanı bir LF Etiketi ile etiketlendiğinde, o veritabanındaki tüm tablolar etiketi devralır ve bir tabloya bir LF Etiketi uygulandığında o tablo içindeki tüm sütunlar etiketi devralır. Devralınan etiketler daha sonra gerekirse geçersiz kılınabilir. Daha sonra, bir LF-Tag ifadesi kullanarak sorumlulara etiketli kaynaklara erişim izni vermek için LF-Tag ifadelerini kullanarak Lake Formation içinde erişim ilkeleri oluşturabilirsiniz. Görmek Meta veri erişim kontrolü için LF Etiketlerini yönetme daha fazla ayrıntı için.

Merkezi veri erişimi yönetişimi özelliğine sahip LF-TBAC'yi göstermek için, iki ayrı iş biriminin belirli veri kümelerine sahip olduğu ve verileri ekipler arasında paylaşması gereken senaryoyu kullanıyoruz.

Müşteri demografik verileri de dahil olmak üzere müşteri bilgileri veritabanını yöneten ve sahibi olan bir müşteri hizmetleri ekibimiz var. Ayrıca, potansiyel müşteriler ve iletişim adayları hakkındaki bilgileri içeren müşteri adayları veri kümesine sahip bir pazarlama ekibine sahip olun.

Etkili kampanyalar yürütebilmek için pazarlama ekibinin müşteri verilerine erişmesi gerekiyor. Bu yazıda, veri ambarında saklanan bu verilerin paylaşılması ve pazarlama ekibine erişim sağlanması sürecini gösteriyoruz. Ayrıca, müşteri veri kümesinde yalnızca bir uzman kullanıcı alt kümesi tarafından bilinmesi gerekenler temelinde erişilmesi gereken kişisel olarak tanımlanabilir bilgiler (PII) sütunları vardır. Bu şekilde, pazarlama alanındaki veri analistleri, anonim müşteri segmenti analizi yapabilmek için yalnızca kişisel olmayan sütunları görebilir, ancak bir grup uzman kullanıcı, kampanyalar veya anketler yürütmek için PII sütunlarına (örneğin, müşteri e-posta adresi) erişebilir. belirli müşteri grupları için.

Aşağıdaki diyagram, bu yazıda üzerinde çalıştığımız veri kümelerinin yapısını ve ayrıntılı sütun düzeyinde erişim sağlamak için bir etiketleme stratejisini göstermektedir.

Aşağıdaki tablo, veri kaynaklarına ilişkin etiketleme stratejimizin ötesinde, iki kişiliğimize etiketler aracılığıyla nasıl izin vermemiz gerektiğine dair bir genel bakış sunmaktadır.

IAM Rolü Kişi Kaynak tipi Izin LF-Tag ifadesi
Pazarlama Analisti Pazarlama ekibinde bir veri analisti DB tanımlamak (departman:pazarlama VEYA departman:müşteri) VE sınıflandırma:özel
. tablo seçmek (departman:pazarlama VEYA departman:müşteri) VE sınıflandırma:özel
. . . . .
pazarlama uzmanı kullanıcı Pazarlama ekibinde ayrıcalıklı bir kullanıcı DB tanımlamak (departman:pazarlama VEYA departman:müşteri) VE sınıflandırma: özel
. Tablo (Sütun) seçmek (departman:pazarlama VEYA departman:müşteri) VE (sınıflandırma:özel VEYA sınıflandırma:pii duyarlı)

Aşağıdaki şema, bu yazıda dağıttığımız kuruluma üst düzey bir genel bakış sunmaktadır.

Aşağıda, veri paylaşımı izinlerini denetlemek için Lake Formation'ın nasıl kullanılacağına ilişkin üst düzey bir genel bakış yer almaktadır:

Yapımcı Kurulumu:

  1. Üreticinin AWS hesabında, müşteri veritabanının sahibi olan Amazon Redshift yöneticisi, üretici kümesinde bir Redshift veri paylaşımı oluşturur ve aynı hesapta AWS Glue Data Catalog'un kullanımına izin verir.
  2. Üretici kümesi yöneticisi, Lake Formation hesabına veri paylaşımına erişme yetkisi verir.
  3. Lake Formation'da Lake Formation yöneticisi veri paylaşımlarını keşfeder ve kaydeder. Erişim sahibi oldukları AWS Glue ARN'lerini keşfetmeleri ve veri paylaşımlarını bir AWS Glue Veri Kataloğu ARN'si ile ilişkilendirmeleri gerekir. Eğer kullanıyorsanız AWS Komut Satırı Arayüzü (AWS CLI), Redshift CLI operasyonları define-data-shares ve Associate-data-share-consumer ile veri paylaşımlarını keşfedebilir ve kabul edebilirsiniz. Bir veri paylaşımını kaydetmek için Lake Formation CLI işlemi kayıt kaynağını kullanın.
  4. Lake Formation yöneticisi, AWS Glue Veri Kataloğu'nda birleştirilmiş bir veritabanı oluşturur; veritabanlarına, tablolara ve sütunlara etiketler atar; ve veri paylaşımındaki nesnelere kullanıcı erişimini kontrol etmek için Lake Formation izinlerini yapılandırır. AWS Glue'daki birleştirilmiş veritabanları hakkında daha fazla bilgi için bkz. Amazon Redshift veri paylaşımındaki verilere ilişkin izinleri yönetme.

Tüketici Kurulumu:

  1. Tüketici tarafında (pazarlama), Amazon Redshift yöneticisi, erişim sahibi oldukları AWS Glue veritabanı ARN'lerini keşfeder, bir AWS Glue veritabanı ARN'sini kullanarak Redshift tüketici kümesinde harici bir veritabanı oluşturur ve aşağıdakilere kullanım izni verir: IAM kimlik bilgileriyle kimliği doğrulanmış veritabanı kullanıcıları Redshift veritabanını sorgulamaya başlamak için.
  2. Veritabanı kullanıcıları görünümleri kullanabilir SVV_EXTERNAL_TABLES ve SVV_EXTERNAL_COLUMNS AWS Glue veritabanındaki erişim sahibi olan tüm tabloları veya sütunları bulmak için; daha sonra AWS Glue veritabanının tablolarını sorgulayabilirler.

Üretici kümesi yöneticisi, verileri artık tüketici kümesiyle paylaşmamaya karar verdiğinde, üretici kümesi yöneticisi kullanımı iptal edebilir, yetkisini kaldırabilir veya veri paylaşımını Amazon Redshift'ten silebilir. Lake Formation'daki ilgili izinler ve nesneler otomatik olarak silinmez.

Önkoşul:

Bu gönderideki adımları takip etmek için aşağıdaki önkoşulları karşılamanız gerekir:

Üretici ve tüketici Redshift kümelerini içeren ortamı dağıtın

Bu gönderide özetlenen adımları takip etmek için aşağıdakileri dağıtın AWS CloudFormation Bu gönderinin konusunu göstermek için gerekli kaynakları içeren yığın:

  1. Klinik Yığını başlat bir CloudFormation şablonu dağıtmak için.
  2. Lake Formation yöneticisi olarak önceden yapılandırdığınız bir IAM rolünü sağlayın.
  3. Şablonu dağıtmak için adımları tamamlayın ve tüm ayarları varsayılan olarak bırakın.
  4. seç AWS CloudFormation'ın IAM kaynakları oluşturabileceğini kabul ediyorum, Daha sonra seçmek Gönder.

Bu CloudFormation yığını aşağıdaki kaynakları oluşturur:

  • Yapımcı Redshift kümesi – Müşteri hizmetleri ekibine aittir ve üzerinde müşteri ve demografik veriler bulunur.
  • Tüketici Kırmızıya Kayma kümesi – Pazarlama ekibine aittir ve veri ambarları ve veri göllerindeki verileri analiz etmek için kullanılır.
  • S3 veri gölü – Web etkinliğini içerir ve veri kümelerini yönlendirir.
  • Veri paylaşım sürecini göstermek için diğer gerekli kaynaklar – Örneğin, IAM rolleri, Lake Formasyonu yapılandırması ve daha fazlası. Yığın tarafından oluşturulan kaynakların tam listesi için CloudFormation şablonunu inceleyin.

Bu CloudFormation şablonunu dağıttıktan sonra oluşturulan kaynakların AWS hesabınıza maliyeti olacaktır. İşlemin sonunda gereksiz masraflardan kaçınmak için kaynakları temizlediğinizden emin olun.

CloudFormation yığını başarıyla dağıtıldıktan sonra (durum şu şekilde gösterilir: CREATE_COMPLETE), aşağıdaki öğelere dikkat edin: Çıkışlar sekmesi:

  • Pazarlama analisti rolü ARN
  • Pazarlama gücü kullanıcı rolü ARN
  • Amazon Redshift yönetici parolasının URL'sinde saklanan URL AWS Sırları Yöneticisi

Redshift veri paylaşımı oluşturun ve ilgili tabloları ekleyin

Üzerinde AWS Yönetim Konsolu, role geç CloudFormation şablonunu dağıtırken Lake Formation yöneticisi olarak atadığınız. Sonra şuraya git Sorgu Düzenleyicisi v2. Hesabınızda Sorgu Düzenleyici V2'yi ilk kez kullanıyorsanız aşağıdaki adımları izleyin: AWS hesabınızı yapılandırın.

Sorgu Düzenleyicisi'ndeki ilk adım, IAM yönetici rolünüzü veritabanında bir veritabanı yöneticisi yapmak için veritabanı yöneticisi kimlik bilgilerini kullanarak müşteri Redshift kümesinde oturum açmaktır.

  1. yanındaki seçenekler menüsünü (üç nokta) seçin. lfunified-customer-dwh cluster Ve seç Bağlantı oluşturun.

  2. seç Veritabanı kullanıcı adı ve şifresi.
  3. Ayrılmak veritabanı as dev.
  4. İçin kullanıcı adı, girmek admin.
  5. İçin Şifre, aşağıdaki adımları tamamlayın:
    1. Değeri olan konsol URL'sine gidin. RedShiftClusterPassword Önceki adımda CloudFormation çıktısı. URL, bu şifrenin Secrets Manager konsoludur.
    2. Aşağı doğru kaydırın Gizli değer bölüm ve seç Gizli değeri alın.
    3. Daha sonra pazarlama Redshift kümesine bağlanırken kullanmak üzere parolayı not edin.
    4. için bu değeri girin Şifre.
  6. Klinik Bağlantı oluştur.

SQL komutunu kullanarak veri paylaşımı oluşturma

Veri üreticisi kümesinde (müşteri hizmetleri) bir veri paylaşımı oluşturmak ve bunu Lake Formation ile paylaşmak için aşağıdaki adımları tamamlayın:

  1. Amazon Redshift konsolundaki gezinti bölmesinde editör, Daha sonra Sorgu düzenleyici V2.
  2. Küme adını seçin (sağ tıklayın) ve Bağlantıyı düzenle or Bağlantı oluştur.
  3. İçin Doğrulamaseçin IAM kimliğinizi kullanan geçici kimlik bilgileri.

Bakın Amazon Redshift veritabanına bağlanma Çeşitli kimlik doğrulama yöntemleri hakkında daha fazla bilgi edinmek için.

  1. İçin veritabanı, bir veritabanı adı girin (bu yazı için, dev).
  2. Klinik Bağlantı oluştur veritabanına bağlanmak için.
  3. Veri paylaşımını oluşturmak ve paylaşılacak veri nesnelerini eklemek için aşağıdaki SQL komutlarını çalıştırın:
    create datashare customer_ds;
    ALTER DATASHARE customer_ds ADD SCHEMA PUBLIC;
    ALTER DATASHARE customer_ds ADD TABLE customer;

  4. AWS Glue Veri Kataloğu aracılığıyla müşteri veri paylaşımını mevcut hesapla paylaşmak için aşağıdaki SQL komutunu çalıştırın:
    GRANT USAGE ON DATASHARE customer_ds TO ACCOUNT '<aws-account-id>' via DATA CATALOG;

  5. Aşağıdaki SQL komutunu çalıştırarak veri paylaşımının oluşturulduğunu ve nesnelerin paylaşıldığını doğrulayın:
    DESC DATASHARE customer_ds;

Bir sonraki adımda kullanılacak olan veri paylaşımı üreticisi küme adı alanını ve hesap kimliğini not edin. Aşağıdaki eylemleri konsolda tamamlayabilirsiniz ancak basitlik açısından AWS CLI komutlarını kullanıyoruz.

  1. CloudShell'e veya AWS CLI'nize gidin ve Lake Formation'ın bunları yönetebilmesi için veri paylaşımını Veri Kataloğuna yetkilendirmek üzere aşağıdaki AWS CLI komutunu çalıştırın:
    aws redshift authorize-data-share --data-share-arn 'arn:aws:redshift:<aws-region>:<aws-account-id>:datashare:<producer-cluster-namespace>/customer_ds' --consumer-identifier DataCatalog/<aws-account-id>

Aşağıdaki örnek bir çıktıdır:

 { "DataShareArn": "arn:aws:redshift:us-east-2:<aws-account-id>:datashare:cd8d91b5-0c17-4567-a52a-59f1bdda71cd/customer_ds", "ProducerArn": "arn:aws:redshift:us-east-2:<aws-account-id>:namespace:cd8d91b5-0c17-4567-a52a-59f1bdda71cd", "AllowPubliclyAccessibleConsumers": false, "DataShareAssociations": [{ "ConsumerIdentifier": "DataCatalog/<aws-account-id>XX", "Status": "AUTHORIZED", "CreatedDate": "2022-11-09T21:10:30.507000+00:00", "StatusChangeDate": "2022-11-09T21:10:50.932000+00:00" }]
}

Sonraki adımlarda kullanmak üzere bu komutta kullandığınız veri paylaşımı ARN'nizi not edin.

Lake Formation kataloğundaki veri paylaşımını kabul edin

Veri paylaşımını kabul etmek için aşağıdaki adımları tamamlayın:

  1. Amazon Redshift veri paylaşımını kabul etmek ve AWS Glue Veri Kataloğuyla ilişkilendirmek için aşağıdaki AWS CLI komutunu çalıştırın:
    aws redshift associate-data-share-consumer --data-share-arn 'arn:aws:redshift:<aws-region>:<aws-account-id>:datashare:<producer-cluster-namespace>/customer_ds' --consumer-arn arn:aws:glue:<aws-region>:<aws-account-id>:catalog

Aşağıdaki örnek bir çıktıdır:

{ "DataShareArn": "arn:aws:redshift:us-east-2:<aws-account-id>:datashare:cfd5fcbd-3492-42b5-9507-dad5d87f7427/customer_ds", "ProducerArn": "arn:aws:redshift:us-east-2:<aws-account-id>:namespace:cfd5fcbd-3492-42b5-9507-dad5d87f7427", "AllowPubliclyAccessibleConsumers": false, "DataShareAssociations": [ { "ConsumerIdentifier": "arn:aws:glue:us-east-2:<aws-account-id>:catalog", "Status": "ACTIVE", "ConsumerRegion": "us-east-2", "CreatedDate": "2023-05-18T12:25:11.178000+00:00", "StatusChangeDate": "2023-05-18T12:25:11.178000+00:00" } ]
}

  1. Veri paylaşımını Lake Formation'a kaydedin:
    aws lakeformation register-resource --resource-arn arn:aws:redshift:<aws-region>:<producer-aws-account-id>:datashare:<producer-cluster-namespace>/customer_ds

  2. Kabul edilen Redshift veri paylaşımına işaret eden AWS Glue veritabanını oluşturun:
    aws glue create-database --region <aws-region> --cli-input-json '{ "CatalogId": "<aws-account-id>", "DatabaseInput": { "Name": "customer_db_shared", "FederatedDatabase": { "Identifier": "arn:aws:redshift:<aws-region>:<producer-aws-account-id>:datashare:<producer-cluster-namespace>/customer_ds", "ConnectionName": "aws:redshift" } }
    }'

  3. Doğrulamak için Lake Formation konsoluna gidin ve veritabanının customer_db_shared yaratıldı.

Artık veri gölü yöneticisi, Lake Formation TBAC'ı kullanarak veri tüketici ekibi (pazarlama) personelini hem veritabanını hem de tabloları görüntüleyebilir ve bunlara erişim izni verebilir.

Kaynaklara Göl Oluşumu etiketleri atayın

Pazarlama ekibindeki veri analisti ve uzman kullanıcının IAM ilkelerine uygun erişimi vermeden önce, tablo ve sütunlara LF etiketleri atamamız gerekir. customer_db_shared veri tabanı. Daha sonra bu müdürlere uygun LF etiketlerini kullanma izni veriyoruz.

LF etiketleri atamak için şu adımları izleyin:

  1. Departman ve sınıflandırma LF etiketini şuna atayın: customer_db_shared (Redshift veri paylaşımı) çözüme genel bakıştaki etiketleme stratejisi tablosunu temel alır. Konsolda aşağıdaki eylemleri çalıştırabilirsiniz ancak bu yazı için aşağıdaki AWS CLI komutunu kullanıyoruz:
    aws lakeformation add-lf-tags-to-resource --cli-input-json '{ "CatalogId": "<aws-account-id>", "Resource": { "Database": { "CatalogId": "<aws-account-id>", "Name": "customer_db_shared" } }, "LFTags": [ { "CatalogId": "<aws-account-id>", "TagKey": "department", "TagValues": [ "customer"] }, { "CatalogId": "<aws-account-id>", "TagKey": "classification", "TagValues": [ "private"] } ] }'

Komut başarılı olursa aşağıdaki gibi bir yanıt almalısınız:

{ "Failures": []
}

  1. Uygun departman ve sınıflandırma LF etiketini şuraya atayın: marketing_db (S3 veri gölünde):
    aws lakeformation add-lf-tags-to-resource --cli-input-json '{ "CatalogId": "<aws-account-id>", "Resource": { "Database": { "CatalogId": "<aws-account-id>", "Name": "lfunified_marketing_dl_db" } }, "LFTags": [ { "CatalogId": "<aws-account-id>", "TagKey": "department", "TagValues": [ "marketing"] }, { "CatalogId": "<aws-account-id>", "TagKey": "classification", "TagValues": [ "private"] } ] }'

Departman ve sınıflandırma etiketini yalnızca veritabanı düzeyinde atamanıza rağmen, bunun o veritabanındaki tablolar ve sütunlar tarafından devralındığını unutmayın.

  1. Sınıflandırmayı atayın pii-sensitive LF etiketinden PII sütunlarına customer veritabanı düzeyinden devralınan değeri geçersiz kılmak için tablo:
    aws lakeformation add-lf-tags-to-resource --cli-input-json '{ "CatalogId": "<aws-account-id>", "Resource": { "TableWithColumns": { "CatalogId": "<aws-account-id>", "DatabaseName": "customer_db_shared", "Name": "public.customer", "ColumnNames":["c_first_name","c_last_name","c_email_address"] } }, "LFTags": [ { "CatalogId": "<aws-account-id>", "TagKey": "classification", "TagValues": [ "pii-sensitive"] } ] }'

LF etiketi ilişkisine dayalı izin verme

Pazarlama verileri analistinin müşteri tablosuna erişmesine izin vermek için aşağıdaki iki AWS CLI komutunu çalıştırın. pii-sensitive (PII) sütunları. Değeri değiştirin DataLakePrincipalIdentifier ile MarketingAnalystRoleARN CloudFormation yığınının çıktılarından not ettiğiniz:

aws lakeformation grant-permissions --cli-input-json '{ "CatalogId": "<aws-account-id>", "Principal": {"DataLakePrincipalIdentifier" : "<MarketingAnalystRoleARN-from-CloudFormation-Outputs>"}, "Resource": { "LFTagPolicy": { "CatalogId": "<aws-account-id>", "ResourceType": "DATABASE", "Expression": [{"TagKey": "department","TagValues": ["marketing","customer"]},{"TagKey": "classification","TagValues": ["private"]}] } }, "Permissions": [ "DESCRIBE" ], "PermissionsWithGrantOption": []
}'
aws lakeformation grant-permissions --cli-input-json '{ "CatalogId": "<aws-account-id>", "Principal": {"DataLakePrincipalIdentifier" : "<MarketingAnalystRoleARN-from-CloudFormation-Outputs>"}, "Resource": { "LFTagPolicy": { "CatalogId": "<aws-account-id>", "ResourceType": "TABLE", "Expression": [{"TagKey": "department","TagValues": ["marketing","customer"]},{"TagKey": "classification","TagValues": ["private"]}] } }, "Permissions": [ "SELECT" ], "PermissionsWithGrantOption": []
}'

Artık pazarlama analistlerine müşteri veri tabanına ve kullanılmayan tablolara erişim izni verdik. pii-sensitive.

Pazarlama uzmanı kullanıcıların kısıtlı LF etiketli (PII sütunları) tablo sütunlarına erişmesine izin vermek için aşağıdaki AWS CLI komutunu çalıştırın:

aws lakeformation grant-permissions --cli-input-json '{ "CatalogId": "<aws-account-id>", "Principal": {"DataLakePrincipalIdentifier" : "<MarketingPowerUserRoleARN-from-CloudFormation-Outputs>"}, "Resource": { "LFTagPolicy": { "CatalogId": "<aws-account-id>", "ResourceType": "DATABASE", "Expression": [{"TagKey": "department","TagValues": ["marketing","customer"]},{"TagKey": "classification","TagValues": ["private"]}] } }, "Permissions": [ "DESCRIBE" ], "PermissionsWithGrantOption": []
}'
aws lakeformation grant-permissions --cli-input-json '{ "CatalogId": "<aws-account-id>", "Principal": {"DataLakePrincipalIdentifier" : "<MarketingPowerUserRoleARN-from-CloudFormation-Outputs>"}, "Resource": { "LFTagPolicy": { "CatalogId": "<aws-account-id>", "ResourceType": "TABLE", "Expression": [{"TagKey": "department","TagValues": ["marketing","customer"]},{"TagKey": "classification","TagValues": ["private", "pii-sensitive"]}] } }, "Permissions": [ "SELECT" ], "PermissionsWithGrantOption": []
}'

Hibeleri tek bir toplu izin izin çağrısında birleştirebiliriz:

aws lakeformation batch-grant-permissions --region us-east-1 --cli-input-json '{ "CatalogId": "<aws-account-id>", "Entries": [ { "Id": "1", "Principal": {"DataLakePrincipalIdentifier" : "arn:aws:iam:: <aws-account-id>:role/Blog-MarketingAnalystRole-1CYV6JSNN14E3"}, "Resource": { "LFTagPolicy": { "CatalogId": "<aws-account-id>", "ResourceType": "DATABASE", "Expression": [{"TagKey": "department","TagValues": ["marketing","customer"]},{"TagKey": "classification","TagValues": ["private"]}] } }, "Permissions": [ "DESCRIBE" ], "PermissionsWithGrantOption": [] }, { "Id": "2", "Principal": {"DataLakePrincipalIdentifier" : "arn:aws:iam:: <aws-account-id>:role/Blog-MarketingAnalystRole-1CYV6JSNN14E3"}, "Resource": { "LFTagPolicy": { "CatalogId": "<aws-account-id>", "ResourceType": "TABLE", "Expression": [{"TagKey": "department","TagValues": ["marketing","customer"]},{"TagKey": "classification","TagValues": ["private"]}] } }, "Permissions": [ "SELECT" ], "PermissionsWithGrantOption": [] }, { "Id": "3", "Principal": {"DataLakePrincipalIdentifier" : "arn:aws:iam:: <aws-account-id>:role/Blog-MarketingPoweruserRole-RKKM0TWQBP0W"}, "Resource": { "LFTagPolicy": { "CatalogId": "<aws-account-id>", "ResourceType": "DATABASE", "Expression": [{"TagKey": "department","TagValues": ["marketing","customer"]},{"TagKey": "classification","TagValues": ["private", "pii-sensitive"]}] } }, "Permissions": [ "DESCRIBE" ], "PermissionsWithGrantOption": [] }, { "Id": "4", "Principal": {"DataLakePrincipalIdentifier" : "arn:aws:iam:: <aws-account-id>:role/Blog-MarketingPoweruserRole-RKKM0TWQBP0W"}, "Resource": { "LFTagPolicy": { "CatalogId": "<aws-account-id>", "ResourceType": "TABLE", "Expression": [{"TagKey": "department","TagValues": ["marketing","customer"]},{"TagKey": "classification","TagValues": ["private", "pii-sensitive"]}] } }, "Permissions": [ "SELECT" ], "PermissionsWithGrantOption": [] } ] }'

Çözümü doğrula

Bu bölümde senaryoyu test etmek için gerekli adımları izliyoruz.

Tüketici (pazarlama) veri ambarındaki veri paylaşımını kullanın

Tüketicilerin (pazarlama ekibinin) veri paylaşımı üzerinden kendileriyle paylaşılan müşteri verilerine ulaşabilmelerini sağlamak için öncelikle Query Editor v2'yi yapılandırmamız gerekiyor. Bu yapılandırma, Lake Formation izinlerinin ana öğesi olarak IAM kimlik bilgilerini kullanmak içindir. Aşağıdaki adımları tamamlayın:

  1. CloudFormation şablon adımını çalıştırırken belirlediğiniz yönetici rolünü kullanarak konsolda oturum açın.
  2. Amazon Redshift konsolunda Sorgu Düzenleyicisi v2'ye gidin.
  3. Gezinti bölmesinde dişli simgesini seçin, ardından Hesap ayarları.
  4. Altında Bağlantı ayarlarıseçin IAM kimlik bilgileriyle kimlik doğrulaması yapın.
  5. Klinik İndirim.

Şimdi pazarlama Redshift kümesine bağlanalım ve müşteri veritabanını pazarlama ekibinin kullanımına sunalım.

  1. yanındaki seçenekler menüsünü (üç nokta) seçin. Serverless:lfunified-marketing-wg kümeleyin ve seçin Bağlantı oluşturun.
  2. seç Veritabanı kullanıcı adı ve şifresi.
  3. Ayrılmak veritabanı as dev.
  4. İçin kullanıcı adı, girmek admin.
  5. İçin Parola, Daha önceki bir adımda Secrets Manger'dan aldığınız şifrenin aynısını girin.
  6. Klinik Bağlantı oluştur.
  7. Başarılı bir şekilde bağlandıktan sonra artı işaretini seçin ve editör Yeni bir Sorgu Düzenleyicisi sekmesi açmak için.
  8. belirttiğinizden emin olun. Serverless: lfunified-marketing-wg workgroup ve dev veri tabanı.
  9. Paylaşılan katalog veritabanından Redshift veritabanını oluşturmak için yeni sekmede aşağıdaki SQL komutunu çalıştırın:
    CREATE DATABASE ext_customerdb_shared FROM ARN 'arn:aws:glue:<aws-region>:<aws-account-id>:database/customer_db_shared' WITH DATA CATALOG SCHEMA "customer_db_shared"

  10. Uzman kullanıcılar ve veri analistleri için Redshift veritabanında IAM rolleri oluşturmak ve kullanım izni vermek üzere aşağıdaki SQL komutlarını çalıştırın. IAM rol adlarını CloudFormation yığın çıktılarından alabilirsiniz:
    CREATE USER IAMR:"lf-redshift-ds-MarketingAnalystRole-XXXXXXXXXXXX" password disable;
    GRANT USAGE ON DATABASE ext_customerdb_shared to IAMR:"lf-redshift-ds-MarketingAnalystRole-XXXXXXXXXXXX"; CREATE USER IAMR:"lf-redshift-ds-MarketingPoweruserRole-YYYYYYYYYYYY" password disable;
    GRANT USAGE ON DATABASE ext_customerdb_shared to IAMR:"lf-redshift-ds-MarketingPoweruserRole-YYYYYYYYYYYY";

AWS Glue'da veri gölü şemasını oluşturun ve pazarlama gücü rolünün potansiyel müşteri ve web etkinliği verilerini sorgulamasına izin verin

S3 veri gölündeki müşteri adayı verilerinin pazarlama ekibinin kullanımına sunulması için aşağıdaki SQL komutlarını çalıştırın:

create external schema datalake from data catalog
database 'lfunified_marketing_dl_db' iam_role 'SESSION'
catalog_id '<aws-account-id>';
GRANT USAGE ON SCHEMA datalake TO IAMR:"lf-redshift-ds-MarketingAnalystRole-XXXXXXXXXXXX";
GRANT USAGE ON SCHEMA datalake TO IAMR:"lf-redshift-ds-MarketingPoweruserRole-YYYYYYYYYYYY";

Paylaşılan veri kümesini pazarlama analisti kullanıcısı olarak sorgulama

Pazarlama ekibi analistlerinin (IAM rolü, pazarlama analisti rolü) paylaşılan veritabanına erişime sahip olduğunu doğrulamak için aşağıdaki adımları uygulayın:

  1. Konsolda oturum açın (kolaylık olması açısından farklı bir tarayıcı kullanabilirsiniz) ve rolünüzü değiştirin için lf-redshift-ds-MarketingAnalystRole-XXXXXXXXXXXX.
  2. Amazon Redshift konsolunda Sorgu Düzenleyicisi v2'ye gidin.
  3. Tüketici kümesine bağlanmak için Serverless: lfunified-marketing-wg Gezinti bölmesindeki tüketici veri ambarı.
  4. İstendiğinde, Doğrulamaseçin federe kullanıcı.
  5. İçin veritabanı, veritabanı adını girin (bu gönderi için, dev).
  6. Klinik İndirim.
  7. Veritabanına bağlandığınızda, mevcut oturum açmış kullanıcıyı aşağıdaki SQL komutuyla doğrulayabilirsiniz:
    select current_user;

  8. Tüketici hesabında oluşturulan birleştirilmiş veritabanlarını bulmak için aşağıdaki SQL komutunu çalıştırın:
    SHOW DATABASES FROM DATA CATALOG ACCOUNT '<aws-account-id>';

  9. Pazarlama analisti rolüne ilişkin izinleri doğrulamak için aşağıdaki SQL komutunu çalıştırın:
    select * from ext_customerdb_shared.public.customer limit 10;

Aşağıdaki ekran görüntüsünde görebileceğiniz gibi, pazarlama analisti müşteri verilerine başarılı bir şekilde erişebiliyor ancak yalnızca amacımız olan kişisel bilgiler olmayan niteliklere erişebiliyor.

  1. Şimdi pazarlama analistinin aynı tablonun PII sütunlarına erişimi olmadığını doğrulayalım:
    select c_customer_email from ext_customerdb_shared.public.customer limit 10;

Paylaşılan veri kümelerini pazarlama uzmanı kullanıcı olarak sorgulama

Pazarlama gücü kullanıcılarının (IAM rolü) doğrulandığını doğrulamak için lf-redshift-ds-MarketingPoweruserRole-YYYYYYYYYYYY) izni var pii-sensetive Paylaşılan veritabanındaki sütunlar için aşağıdaki adımları gerçekleştirin:

  1. Konsolda oturum açın (kolaylık olması açısından farklı bir tarayıcı kullanabilirsiniz) ve rolünüzü şu şekilde değiştirin: lf-redshift-ds-MarketingPoweruserRole-YYYYYYYYYYYY.
  2. Amazon Redshift konsolunda Sorgu Düzenleyicisi v2'ye gidin.
  3. Tüketici kümesine bağlanmak için Serverless: lfunified-marketing-wg Gezinti bölmesindeki tüketici veri ambarı.
  4. İstendiğinde, Doğrulamaseçin federe kullanıcı.
  5. İçin veritabanı, veritabanı adını girin (bu gönderi için, dev).
  6. Klinik İndirim.
  7. Veritabanına bağlandığınızda, mevcut oturum açmış kullanıcıyı aşağıdaki SQL komutuyla doğrulayabilirsiniz:
    select current_user;

  8. Şimdi pazarlama gücü rolünün müşteri tablosunun PII sütunlarına erişimi olduğunu doğrulayalım:
    select c_customer_id, c_first_name, c_last_name,c_customer_email from customershareddb.public.customer limit 10;

  9. Pazarlama ekibindeki uzman kullanıcıların, etkili kampanyalar yürütmek amacıyla erişim sahibi oldukları farklı veri kümelerindeki verileri birleştirmek için artık bir sorgu çalıştırabildiğini doğrulayın:
    SELECT emailaddress as emailAddress, customer.c_first_name as firstName, customer.c_last_name as lastName, leadsource, contactnotes, usedpromo
    FROM "dev"."datalake"."lead" as lead
    JOIN ext_customerdb_shared.public.customer as customer
    ON lead.emailaddress = customer.c_email_address
    WHERE lead.donotreachout = 'false'

Temizlemek

Bu gönderideki adımları tamamladıktan sonra kaynakları temizlemek için CloudFormation yığınını silin:

  1. AWS CloudFormation konsolunda bu yazının başında dağıttığınız yığını seçin.
  2. Klinik Sil ve yığını silmek için talimatları izleyin.

Sonuç

Bu yazıda Lake Formation etiketlerini nasıl kullanabileceğinizi ve Lake Formation'ı kullanarak veri gölünüz ve Amazon Redshift veri paylaşımınız için izinleri nasıl yönetebileceğinizi gösterdik. Veri yönetimi için Lake Formation LF-TBAC'ı kullanmak, data lake'inizi ve Amazon Redshift veri paylaşım izinlerinizi geniş ölçekte yönetmenize yardımcı olur. Ayrıca, ayrıntılı erişim kontrolüyle iş birimleri arasında veri paylaşımına da olanak tanır. Data lake'inize ve Redshift veri paylaşımlarınıza erişimi tek bir yerden yönetmek, daha iyi yönetim sağlayarak veri güvenliğine ve uyumluluğa yardımcı olur.

Sorularınız veya önerileriniz varsa, bunları yorumlar bölümünde gönderin.

Lake Formation tarafından yönetilen Amazon Redshift veri paylaşımı ve etiket tabanlı erişim kontrolü hakkında daha fazla bilgi için bkz. AWS Lake Formation ile Amazon Redshift veri paylaşımı için erişimi ve izinleri merkezi olarak yönetin ve AWS Lake Formation Tag tabanlı erişim kontrolünü kullanarak veri gölünüzü uygun ölçekte kolayca yönetin.


Yazarlar Hakkında

Praveen Kumar AWS'de bulutta yerel hizmetleri kullanarak modern veri ve analiz platformlarını tasarlama, oluşturma ve uygulama konusunda uzmanlığa sahip bir Analitik Çözüm Mimarıdır. İlgi alanları sunucusuz teknoloji, modern bulut veri ambarları, akış ve makine öğrenimi uygulamalarıdır.

Srividya Parthasarathy AWS Lake Formation ekibinde Kıdemli Büyük Veri Mimarıdır. Veri ağı çözümleri oluşturmaktan ve bunları toplulukla paylaşmaktan keyif alıyor.

Paul Villena AWS'de iş değerini artırmak için modern veri ve analiz çözümleri oluşturma konusunda uzmanlığa sahip bir Analitik Çözüm Mimarıdır. Bulutun gücünden yararlanmalarına yardımcı olmak için müşterilerle birlikte çalışıyor. İlgi alanları kod olarak altyapı, sunucusuz teknolojiler ve Python'da kodlamadır.

Mustafa Safipur Sidney merkezli AWS'de Çözüm Mimarıdır. Teknolojiyi ve AWS'yi kullanarak iş sonuçları elde etmek için müşterilerle birlikte çalışıyor. Geçtiğimiz on yılda ANZ bölgesindeki birçok büyük kuruluşun veri, dijital ve kurumsal iş yüklerini AWS üzerinde oluşturmasına yardımcı oldu.

spot_img

En Son İstihbarat

spot_img