Logo Zephyrnet

Triển khai kiểm soát truy cập dựa trên thẻ cho kho dữ liệu của bạn và chia sẻ dữ liệu Amazon Redshift với AWS Lake Formation | Dịch vụ web của Amazon

Ngày:

Các tổ chức dựa trên dữ liệu coi dữ liệu là tài sản và sử dụng dữ liệu đó trong các ngành kinh doanh (LOB) khác nhau để đưa ra những hiểu biết kịp thời và đưa ra các quyết định kinh doanh tốt hơn. Nhiều tổ chức có các công cụ và cơ sở hạ tầng phân tán trên các đơn vị kinh doanh khác nhau. Điều này dẫn đến việc có dữ liệu trên nhiều trường hợp kho dữ liệu và hồ dữ liệu bằng cách sử dụng kiến trúc dữ liệu hiện đại trong các tài khoản AWS riêng biệt.

Amazon RedShift chia sẻ dữ liệu cho phép bạn chia sẻ an toàn dữ liệu trực tiếp, nhất quán về mặt giao dịch trong một Amazon RedShift kho dữ liệu với một kho dữ liệu Redshift khác trong cùng một tài khoản AWS, giữa các tài khoản và giữa các Khu vực mà không cần sao chép hoặc di chuyển dữ liệu từ cụm này sang cụm khác. Khách hàng muốn có thể quản lý quyền của họ ở một vị trí trung tâm trên tất cả tài sản của họ. Trước đây, việc quản lý các cơ sở dữ liệu Redshift chỉ được giới hạn trong Amazon Redshift, điều này gây khó khăn cho việc quản lý các quyền đối với kho dữ liệu của bạn và các quyền đối với Amazon Redshift ở một nơi duy nhất. Ví dụ: bạn phải điều hướng đến một tài khoản cá nhân để xem và quản lý thông tin truy cập cho Amazon Redshift và kho dữ liệu trên Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3). Khi một tổ chức phát triển, các quản trị viên muốn có một cơ chế để quản lý tập trung và hiệu quả việc chia sẻ dữ liệu trên các hồ dữ liệu và kho dữ liệu để quản trị và kiểm tra, đồng thời thực thi kiểm soát truy cập chi tiết.

Gần đây, chúng tôi đã công bố việc tích hợp chia sẻ dữ liệu Amazon Redshift với Sự hình thành hồ AWS. Với tính năng này, giờ đây khách hàng của Amazon Redshift có thể quản lý việc chia sẻ, áp dụng các chính sách truy cập một cách tập trung và mở rộng quy mô quyền một cách hiệu quả bằng cách sử dụng Thẻ LF.

Lake Formation đã là một lựa chọn phổ biến cho các hồ dữ liệu quản lý tập trung được hỗ trợ bởi Amazon S3. Giờ đây, với sự hỗ trợ của Lake Formation dành cho chia sẻ dữ liệu Amazon Redshift, nó mở ra các mẫu thiết kế mới, đồng thời mở rộng khả năng quản trị và bảo mật trên các kho dữ liệu. Với sự tích hợp này, bạn có thể sử dụng Lake Formation để xác định kiểm soát truy cập chi tiết trên các bảng và dạng xem được chia sẻ với tính năng chia sẻ dữ liệu Amazon Redshift cho liên kết Quản lý truy cập và nhận dạng AWS (IAM) người dùng và vai trò IAM. Lake Formation cũng cung cấp kiểm soát truy cập dựa trên thẻ (TBAC), có thể được sử dụng để đơn giản hóa và mở rộng quy mô quản trị các đối tượng danh mục dữ liệu như cơ sở dữ liệu và bảng.

Trong bài đăng này, chúng tôi thảo luận về tính năng mới này và cách triển khai TBAC cho kho dữ liệu của bạn và chia sẻ dữ liệu Amazon Redshift trên Lake Formation.

Tổng quan về giải pháp

Kiểm soát truy cập dựa trên thẻ Lake Formation (LF-TBAC) cho phép bạn nhóm các Keo AWS tài nguyên Danh mục dữ liệu với nhau và xác định chính sách cấp hoặc thu hồi quyền bằng cách sử dụng biểu thức LF-Tag. Thẻ LF được phân cấp ở chỗ khi cơ sở dữ liệu được gắn thẻ bằng Thẻ LF, tất cả các bảng trong cơ sở dữ liệu đó sẽ kế thừa thẻ và khi Thẻ LF được áp dụng cho một bảng, tất cả các cột trong bảng đó sẽ kế thừa thẻ. Các thẻ được kế thừa sau đó có thể được ghi đè nếu cần. Sau đó, bạn có thể tạo các chính sách truy cập trong Lake Formation bằng biểu thức LF-Tag để cấp quyền truy cập chính vào các tài nguyên được gắn thẻ bằng cách sử dụng biểu thức LF-Tag. Nhìn thấy Quản lý LF-Tags để kiểm soát truy cập siêu dữ liệu để biết thêm chi tiết.

Để chứng minh LF-TBAC có khả năng quản trị truy cập dữ liệu trung tâm, chúng tôi sử dụng tình huống trong đó hai đơn vị kinh doanh riêng biệt sở hữu các bộ dữ liệu cụ thể và cần chia sẻ dữ liệu giữa các nhóm.

Chúng tôi có một nhóm chăm sóc khách hàng quản lý và sở hữu cơ sở dữ liệu thông tin khách hàng bao gồm dữ liệu nhân khẩu học của khách hàng. Và có một nhóm tiếp thị sở hữu tập dữ liệu khách hàng tiềm năng, bao gồm thông tin về khách hàng tiềm năng và khách hàng tiềm năng liên hệ.

Để có thể chạy các chiến dịch hiệu quả, nhóm tiếp thị cần truy cập vào dữ liệu khách hàng. Trong bài đăng này, chúng tôi trình bày quy trình chia sẻ dữ liệu này được lưu trữ trong kho dữ liệu và cấp quyền truy cập cho nhóm tiếp thị. Hơn nữa, có các cột thông tin nhận dạng cá nhân (PII) trong tập dữ liệu khách hàng mà chỉ một nhóm nhỏ người dùng có quyền truy cập trên cơ sở cần biết. Bằng cách này, các nhà phân tích dữ liệu trong lĩnh vực tiếp thị chỉ có thể nhìn thấy các cột không phải PII để có thể chạy phân tích phân khúc khách hàng ẩn danh, nhưng một nhóm người dùng có quyền có thể truy cập các cột PII (ví dụ: địa chỉ email của khách hàng) để có thể chạy các chiến dịch hoặc khảo sát cho các nhóm khách hàng cụ thể.

Sơ đồ sau đây cho thấy cấu trúc của bộ dữ liệu mà chúng tôi làm việc trong bài đăng này và chiến lược gắn thẻ để cung cấp quyền truy cập cấp cột chi tiết.

Ngoài chiến lược gắn thẻ của chúng tôi trên tài nguyên dữ liệu, bảng sau đây cung cấp tổng quan về cách chúng tôi nên cấp quyền cho hai diện mạo của mình thông qua thẻ.

Vai trò IAM Persona Loại tài nguyên Sự cho phép Biểu thức thẻ LF
phân tích tiếp thị Một nhà phân tích dữ liệu trong nhóm tiếp thị DB mô tả (bộ phận:tiếp thị HOẶC bộ phận:khách hàng) VÀ phân loại:riêng tư
. Bàn chọn (bộ phận:tiếp thị HOẶC bộ phận:khách hàng) VÀ phân loại:riêng tư
. . . . .
người tiếp thị mạnh mẽ Người dùng đặc quyền trong nhóm tiếp thị DB mô tả (bộ phận:tiếp thị HOẶC bộ phận:khách hàng) VÀ phân loại: tư nhân
. Bảng (Cột) chọn (bộ phận:tiếp thị HOẶC bộ phận:khách hàng) VÀ (phân loại:riêng tư HOẶC phân loại:nhạy cảm pii)

Sơ đồ sau đây cung cấp tổng quan cấp cao về thiết lập mà chúng tôi triển khai trong bài đăng này.

Sau đây là tổng quan cấp cao về cách sử dụng Lake Formation để kiểm soát quyền chia sẻ dữ liệu:

Cài đặt nhà sản xuất:

  1. Trong tài khoản AWS của nhà sản xuất, quản trị viên Amazon Redshift sở hữu cơ sở dữ liệu khách hàng sẽ tạo một cơ sở dữ liệu Redshift trên cụm nhà sản xuất và cấp quyền sử dụng cho AWS Glue Data Catalog trong cùng một tài khoản.
  2. Quản trị viên cụm nhà sản xuất ủy quyền cho tài khoản Lake Formation truy cập vào cơ sở dữ liệu.
  3. Trong Lake Formation, quản trị viên Lake Formation phát hiện và đăng ký các cơ sở dữ liệu. Họ phải khám phá các ARN AWS ​​Glue mà họ có quyền truy cập và liên kết các cơ sở dữ liệu với một ARN Danh mục dữ liệu AWS Glue. Nếu bạn đang sử dụng Giao diện dòng lệnh AWS (AWS CLI), bạn có thể khám phá và chấp nhận chia sẻ dữ liệu với hoạt động Redshift CLI mô tả-chia sẻ dữ liệu và người tiêu dùng liên kết-chia sẻ dữ liệu. Để đăng ký chia sẻ dữ liệu, hãy sử dụng tài nguyên đăng ký hoạt động Lake Formation CLI.
  4. Quản trị viên Lake Formation tạo cơ sở dữ liệu được liên kết trong AWS Glue Data Catalog; gán thẻ cho cơ sở dữ liệu, bảng và cột; và định cấu hình quyền của Lake Formation để kiểm soát quyền truy cập của người dùng vào các đối tượng trong cơ sở dữ liệu. Để biết thêm thông tin về cơ sở dữ liệu được liên kết trong AWS Glue, hãy xem Quản lý quyền đối với dữ liệu trong chia sẻ dữ liệu Amazon Redshift.

Thiết lập người tiêu dùng:

  1. Về phía người tiêu dùng (tiếp thị), quản trị viên Amazon Redshift phát hiện ARN cơ sở dữ liệu AWS Glue mà họ có quyền truy cập, tạo cơ sở dữ liệu bên ngoài trong cụm người tiêu dùng Redshift bằng ARN cơ sở dữ liệu AWS Glue và cấp quyền sử dụng cho người dùng cơ sở dữ liệu được xác thực bằng thông tin xác thực IAM để bắt đầu truy vấn cơ sở dữ liệu Redshift.
  2. Người dùng cơ sở dữ liệu có thể sử dụng các khung nhìn SVV_EXTERNAL_TABLESSVV_EXTERNAL_COLUMNS để tìm tất cả các bảng hoặc cột trong cơ sở dữ liệu AWS Glue mà họ có quyền truy cập; thì họ có thể truy vấn các bảng của cơ sở dữ liệu AWS Glue.

Khi quản trị viên cụm nhà sản xuất quyết định không chia sẻ dữ liệu với cụm người tiêu dùng nữa, quản trị viên cụm nhà sản xuất có thể thu hồi việc sử dụng, hủy cấp phép hoặc xóa chia sẻ dữ liệu khỏi Amazon Redshift. Các quyền và đối tượng liên quan trong Lake Formation sẽ không tự động bị xóa.

Điều kiện tiên quyết:

Để làm theo các bước trong bài đăng này, bạn phải đáp ứng các điều kiện tiên quyết sau:

Môi trường triển khai bao gồm các cụm Redshift của nhà sản xuất và người tiêu dùng

Để làm theo các bước được nêu trong bài đăng này, hãy triển khai như sau Hình thành đám mây AWS ngăn xếp bao gồm các tài nguyên cần thiết để chứng minh chủ đề của bài đăng này:

  1. Chọn Khởi chạy ngăn xếp để triển khai mẫu CloudFormation.
  2. Cung cấp vai trò IAM mà bạn đã định cấu hình với tư cách là quản trị viên của Lake Formation.
  3. Hoàn thành các bước để triển khai mẫu và để tất cả các cài đặt làm mặc định.
  4. Chọn Tôi xác nhận rằng AWS CloudFormation có thể tạo tài nguyên IAM, sau đó chọn Gửi.

Ngăn xếp CloudFormation này tạo các tài nguyên sau:

  • Cụm dịch chuyển đỏ của nhà sản xuất – Thuộc sở hữu của nhóm chăm sóc khách hàng và có dữ liệu về khách hàng và nhân khẩu học trên đó.
  • Cụm dịch chuyển đỏ của người tiêu dùng – Thuộc sở hữu của nhóm tiếp thị và được sử dụng để phân tích dữ liệu trên các kho dữ liệu và hồ dữ liệu.
  • hồ dữ liệu S3 – Chứa hoạt động web và bộ dữ liệu khách hàng tiềm năng.
  • Các tài nguyên cần thiết khác để chứng minh quá trình chia sẻ dữ liệu – Ví dụ: vai trò IAM, cấu hình Lake Formation, v.v. Để biết danh sách đầy đủ các tài nguyên do ngăn xếp tạo, hãy kiểm tra mẫu CloudFormation.

Sau khi bạn triển khai mẫu CloudFormation này, các tài nguyên được tạo sẽ phát sinh chi phí cho tài khoản AWS của bạn. Khi kết thúc quá trình, hãy đảm bảo rằng bạn dọn sạch tài nguyên để tránh các khoản phí không cần thiết.

Sau khi ngăn xếp CloudFormation được triển khai thành công (trạng thái hiển thị là TẠO_COMPLETE), hãy lưu ý các mục sau trên Kết quả đầu ra tab:

  • Vai trò nhà phân tích tiếp thị ARN
  • Vai trò người dùng quyền lực tiếp thị ARN
  • URL cho mật khẩu quản trị viên Amazon Redshift được lưu trữ trong Quản lý bí mật AWS

Tạo chia sẻ dữ liệu Redshift và thêm các bảng có liên quan

trên Bảng điều khiển quản lý AWS, chuyển sang vai trò mà bạn đã chỉ định làm quản trị viên Lake Formation khi triển khai mẫu CloudFormation. Sau đó đi đến Trình chỉnh sửa truy vấn v2. Nếu đây là lần đầu tiên sử dụng Query Editor V2 trong tài khoản của bạn, hãy làm theo các bước sau để định cấu hình tài khoản AWS của bạn.

Bước đầu tiên trong Trình soạn thảo truy vấn là đăng nhập vào cụm Redshift của khách hàng bằng thông tin xác thực của quản trị viên cơ sở dữ liệu để đặt vai trò quản trị viên IAM của bạn thành quản trị viên DB trên cơ sở dữ liệu.

  1. Chọn menu tùy chọn (ba dấu chấm) bên cạnh lfunified-customer-dwh cluster Và chọn Tạo kết nối.

  2. Chọn Tên người dùng và mật khẩu cơ sở dữ liệu.
  3. Rời bỏ Cơ sở dữ liệu as dev.
  4. Trong Tên người dùng, đi vào admin.
  5. Trong Mật khẩu, hoàn thành các bước sau:
    1. Chuyển đến URL của bảng điều khiển, đây là giá trị của RedShiftClusterPassword Đầu ra CloudFormation ở bước trước. URL là bảng điều khiển Trình quản lý bí mật cho mật khẩu này.
    2. Cuộn xuống Giá trị bí mật phần và chọn Truy xuất giá trị bí mật.
    3. Ghi lại mật khẩu để sử dụng sau này khi kết nối với cụm Redshift tiếp thị.
    4. Nhập giá trị này cho Mật khẩu.
  6. Chọn Tạo kết nối.

Tạo một datashare bằng lệnh SQL

Hoàn thành các bước sau để tạo một datashare trong cụm nhà sản xuất dữ liệu (chăm sóc khách hàng) và chia sẻ nó với Lake Formation:

  1. Trên bảng điều khiển Amazon Redshift, trong ngăn điều hướng, hãy chọn Biên tập viênthì Trình soạn thảo truy vấn V2.
  2. Chọn (nhấp chuột phải) vào tên cụm và chọn Chỉnh sửa kết nối or Tạo kết nối.
  3. Trong Xác thực, lựa chọn Thông tin xác thực tạm thời sử dụng danh tính IAM của bạn.

Tham khảo Kết nối với cơ sở dữ liệu Amazon Redshift để tìm hiểu thêm về các phương pháp xác thực khác nhau.

  1. Trong Cơ sở dữ liệu, nhập tên cơ sở dữ liệu (đối với bài đăng này, dev).
  2. Chọn Tạo kết nối để kết nối với cơ sở dữ liệu.
  3. Chạy các lệnh SQL sau để tạo chia sẻ dữ liệu và thêm các đối tượng dữ liệu sẽ được chia sẻ:
    create datashare customer_ds;
    ALTER DATASHARE customer_ds ADD SCHEMA PUBLIC;
    ALTER DATASHARE customer_ds ADD TABLE customer;

  4. Chạy lệnh SQL sau để chia sẻ dữ liệu khách hàng với tài khoản hiện tại qua AWS Glue Data Catalog:
    GRANT USAGE ON DATASHARE customer_ds TO ACCOUNT '<aws-account-id>' via DATA CATALOG;

  5. Xác minh chia sẻ dữ liệu đã được tạo và các đối tượng được chia sẻ bằng cách chạy lệnh SQL sau:
    DESC DATASHARE customer_ds;

Lưu ý không gian tên cụm nhà sản xuất chia sẻ dữ liệu và ID tài khoản sẽ được sử dụng trong bước sau. Bạn có thể hoàn thành các thao tác sau trên bảng điều khiển, nhưng để đơn giản, chúng tôi sử dụng các lệnh AWS CLI.

  1. Truy cập CloudShell hoặc AWS CLI của bạn và chạy lệnh AWS CLI sau để ủy quyền chia sẻ dữ liệu cho Danh mục dữ liệu để Lake Formation có thể quản lý chúng:
    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>

Sau đây là một ví dụ đầu ra:

 { "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" }]
}

Ghi lại ARN chia sẻ dữ liệu của bạn mà bạn đã sử dụng trong lệnh này để sử dụng trong các bước tiếp theo.

Chấp nhận chia sẻ dữ liệu trong danh mục Lake Formation

Để chấp nhận chia sẻ dữ liệu, hãy hoàn thành các bước sau:

  1. Chạy lệnh AWS CLI sau để chấp nhận và liên kết chia sẻ dữ liệu Amazon Redshift với AWS Glue Data Catalog:
    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

Sau đây là một ví dụ đầu ra:

{ "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. Đăng ký datashare trong Lake Formation:
    aws lakeformation register-resource --resource-arn arn:aws:redshift:<aws-region>:<producer-aws-account-id>:datashare:<producer-cluster-namespace>/customer_ds

  2. Tạo cơ sở dữ liệu AWS Glue trỏ đến chia sẻ dữ liệu Redshift được chấp nhận:
    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. Để xác minh, hãy chuyển đến bảng điều khiển Lake Formation và kiểm tra xem cơ sở dữ liệu có customer_db_shared được tạo ra.

Giờ đây, quản trị viên hồ dữ liệu có thể xem và cấp quyền truy cập trên cả cơ sở dữ liệu và bảng cho các nhân viên của nhóm tiêu dùng dữ liệu (tiếp thị) bằng TBAC của Lake Formation.

Gán các thẻ Lake Formation cho tài nguyên

Trước khi chúng tôi cấp quyền truy cập thích hợp cho các nguyên tắc IAM của nhà phân tích dữ liệu và người dùng thành thạo trong nhóm tiếp thị, chúng tôi phải gán các thẻ LF cho các bảng và cột của customer_db_shared cơ sở dữ liệu. Sau đó, chúng tôi cấp quyền cho các hiệu trưởng này đối với các thẻ LF thích hợp.

Để gán thẻ LF, hãy làm theo các bước sau:

  1. Chỉ định bộ phận và thẻ LF phân loại cho customer_db_shared (Chia sẻ dữ liệu Redshift) dựa trên bảng chiến lược gắn thẻ trong phần tổng quan về giải pháp. Bạn có thể chạy các hành động sau trên bảng điều khiển, nhưng đối với bài đăng này, chúng tôi sử dụng lệnh AWS CLI sau:
    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"] } ] }'

Nếu lệnh thành công, bạn sẽ nhận được phản hồi như sau:

{ "Failures": []
}

  1. Chỉ định bộ phận thích hợp và thẻ LF phân loại cho marketing_db (trên hồ dữ liệu S3):
    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"] } ] }'

Lưu ý rằng mặc dù bạn chỉ gán bộ phận và thẻ phân loại ở cấp độ cơ sở dữ liệu, nó vẫn được kế thừa bởi các bảng và cột trong cơ sở dữ liệu đó.

  1. Chỉ định phân loại pii-sensitive LF-tag vào các cột PII của customer table để ghi đè giá trị được kế thừa từ cấp cơ sở dữ liệu:
    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"] } ] }'

Cấp quyền dựa trên liên kết thẻ LF

Chạy hai lệnh AWS CLI sau để cho phép nhà phân tích dữ liệu tiếp thị truy cập vào bảng khách hàng ngoại trừ pii-sensitive (PII) cột. Thay giá trị cho DataLakePrincipalIdentifier với MarketingAnalystRoleARN mà bạn đã lưu ý từ kết quả đầu ra của ngăn xếp CloudFormation:

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": []
}'

Hiện chúng tôi đã cấp cho các nhà phân tích tiếp thị quyền truy cập vào cơ sở dữ liệu khách hàng và các bảng không pii-sensitive.

Để cho phép người dùng có năng lực tiếp thị truy cập vào các cột trong bảng có thẻ LF bị hạn chế (cột PII), hãy chạy lệnh AWS CLI sau:

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": []
}'

Chúng tôi có thể kết hợp các khoản trợ cấp thành một lệnh gọi quyền cấp hàng loạt:

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": [] } ] }'

Xác thực giải pháp

Trong phần này, chúng tôi thực hiện các bước để kiểm tra kịch bản.

Sử dụng dữ liệu chia sẻ trong kho dữ liệu người tiêu dùng (tiếp thị)

Để cho phép người tiêu dùng (nhóm tiếp thị) truy cập vào dữ liệu khách hàng được chia sẻ với họ thông qua chia sẻ dữ liệu, trước tiên, chúng tôi phải định cấu hình Trình soạn thảo truy vấn v2. Cấu hình này là để sử dụng thông tin đăng nhập IAM làm thông tin chính cho các quyền của Lake Formation. Hoàn thành các bước sau:

  1. Đăng nhập vào bảng điều khiển bằng vai trò quản trị viên mà bạn đã chỉ định khi chạy bước mẫu CloudFormation.
  2. Trên bảng điều khiển Amazon Redshift, hãy truy cập Trình soạn thảo truy vấn v2.
  3. Chọn biểu tượng bánh răng trong ngăn điều hướng, sau đó chọn Cài đặt tài khoản.
  4. Theo Cài đặt kết nối, lựa chọn Xác thực bằng thông tin đăng nhập IAM.
  5. Chọn Lưu.

Bây giờ, hãy kết nối với cụm Redshift tiếp thị và cung cấp cơ sở dữ liệu khách hàng cho nhóm tiếp thị.

  1. Chọn menu tùy chọn (ba dấu chấm) bên cạnh Serverless:lfunified-marketing-wg nhóm và chọn Tạo kết nối.
  2. Chọn Tên người dùng và mật khẩu cơ sở dữ liệu.
  3. Rời bỏ Cơ sở dữ liệu as dev.
  4. Trong Tên người dùng, đi vào admin.
  5. Trong Mật khẩu, nhập cùng một mật khẩu mà bạn đã lấy từ Secrets Manger ở bước trước đó.
  6. Chọn Tạo kết nối.
  7. Sau khi kết nối thành công, chọn dấu cộng và chọn Biên tập viên để mở tab Trình soạn thảo truy vấn mới.
  8. Đảm bảo rằng bạn chỉ định Serverless: lfunified-marketing-wg workgroupdev cơ sở dữ liệu.
  9. Để tạo cơ sở dữ liệu Redshift từ cơ sở dữ liệu danh mục dùng chung, hãy chạy lệnh SQL sau trên tab mới:
    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. Chạy các lệnh SQL sau để tạo và cấp quyền sử dụng trên cơ sở dữ liệu Redshift cho các vai trò IAM cho người dùng thành thạo và nhà phân tích dữ liệu. Bạn có thể lấy tên vai trò IAM từ đầu ra ngăn xếp CloudFormation:
    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";

Tạo lược đồ hồ dữ liệu trong AWS Glue và cho phép vai trò quyền lực tiếp thị truy vấn dữ liệu hoạt động web và khách hàng tiềm năng

Chạy các lệnh SQL sau để cung cấp dữ liệu khách hàng tiềm năng trong kho dữ liệu S3 cho nhóm tiếp thị:

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";

Truy vấn tập dữ liệu được chia sẻ với tư cách là người dùng phân tích tiếp thị

Để xác thực rằng các nhà phân tích nhóm tiếp thị (vai trò IAM marketing-analyst-role) có quyền truy cập vào cơ sở dữ liệu được chia sẻ, hãy thực hiện các bước sau:

  1. Đăng nhập vào bảng điều khiển (để thuận tiện, bạn có thể sử dụng một trình duyệt khác) và chuyển đổi vai trò của bạn đến lf-redshift-ds-MarketingAnalystRole-XXXXXXXXXXXX.
  2. Trên bảng điều khiển Amazon Redshift, hãy truy cập Trình soạn thảo truy vấn v2.
  3. Để kết nối với cụm người tiêu dùng, hãy chọn Serverless: lfunified-marketing-wg kho dữ liệu người tiêu dùng trong ngăn điều hướng.
  4. Khi được nhắc, cho Xác thực, lựa chọn Người dùng liên kết.
  5. Trong Cơ sở dữ liệu, nhập tên cơ sở dữ liệu (đối với bài đăng này, dev).
  6. Chọn Lưu.
  7. Khi bạn đã kết nối với cơ sở dữ liệu, bạn có thể xác thực người dùng đã đăng nhập hiện tại bằng lệnh SQL sau:
    select current_user;

  8. Để tìm cơ sở dữ liệu được liên kết được tạo trên tài khoản khách hàng, hãy chạy lệnh SQL sau:
    SHOW DATABASES FROM DATA CATALOG ACCOUNT '<aws-account-id>';

  9. Để xác thực quyền đối với vai trò nhà phân tích tiếp thị, hãy chạy lệnh SQL sau:
    select * from ext_customerdb_shared.public.customer limit 10;

Như bạn có thể thấy trong ảnh chụp màn hình sau đây, nhà phân tích tiếp thị có thể truy cập thành công dữ liệu khách hàng nhưng chỉ các thuộc tính không phải PII, đó là ý định của chúng tôi.

  1. Bây giờ, hãy xác thực rằng nhà phân tích tiếp thị không có quyền truy cập vào các cột PII của cùng một bảng:
    select c_customer_email from ext_customerdb_shared.public.customer limit 10;

Truy vấn các bộ dữ liệu được chia sẻ với tư cách là người dùng có năng lực tiếp thị

Để xác thực rằng người dùng có năng lực tiếp thị (vai trò IAM lf-redshift-ds-MarketingPoweruserRole-YYYYYYYYYYYY) có quyền truy cập vào pii-sensetive cột trong cơ sở dữ liệu được chia sẻ, hãy thực hiện các bước sau:

  1. Đăng nhập vào bảng điều khiển (để thuận tiện, bạn có thể sử dụng một trình duyệt khác) và chuyển vai trò của mình sang lf-redshift-ds-MarketingPoweruserRole-YYYYYYYYYYYY.
  2. Trên bảng điều khiển Amazon Redshift, hãy truy cập Trình soạn thảo truy vấn v2.
  3. Để kết nối với cụm người tiêu dùng, hãy chọn Serverless: lfunified-marketing-wg kho dữ liệu người tiêu dùng trong ngăn điều hướng.
  4. Khi được nhắc, cho Xác thực, lựa chọn Người dùng liên kết.
  5. Trong Cơ sở dữ liệu, nhập tên cơ sở dữ liệu (đối với bài đăng này, dev).
  6. Chọn Lưu.
  7. Khi bạn đã kết nối với cơ sở dữ liệu, bạn có thể xác thực người dùng đã đăng nhập hiện tại bằng lệnh SQL sau:
    select current_user;

  8. Bây giờ, hãy xác thực rằng vai trò quyền lực tiếp thị có quyền truy cập vào các cột PII của bảng khách hàng:
    select c_customer_id, c_first_name, c_last_name,c_customer_email from customershareddb.public.customer limit 10;

  9. Xác thực rằng những người dùng thành thạo trong nhóm tiếp thị hiện có thể chạy truy vấn để kết hợp dữ liệu trên các bộ dữ liệu khác nhau mà họ có quyền truy cập để chạy các chiến dịch hiệu quả:
    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'

Làm sạch

Sau khi bạn hoàn thành các bước trong bài đăng này, để dọn sạch tài nguyên, hãy xóa ngăn xếp CloudFormation:

  1. Trên bảng điều khiển AWS CloudFormation, chọn ngăn xếp mà bạn đã triển khai ở phần đầu của bài đăng này.
  2. Chọn Xóa bỏ và làm theo lời nhắc để xóa ngăn xếp.

Kết luận

Trong bài đăng này, chúng tôi đã chỉ ra cách bạn có thể sử dụng thẻ Lake Formation và quản lý quyền đối với kho dữ liệu của bạn cũng như chia sẻ dữ liệu Amazon Redshift bằng Lake Formation. Việc sử dụng Lake Formation LF-TBAC để quản trị dữ liệu giúp bạn quản lý kho dữ liệu của mình và quyền chia sẻ dữ liệu Amazon Redshift trên quy mô lớn. Ngoài ra, nó cho phép chia sẻ dữ liệu giữa các đơn vị kinh doanh với kiểm soát truy cập chi tiết. Quản lý quyền truy cập vào kho dữ liệu và các cơ sở dữ liệu Redshift của bạn ở một nơi duy nhất cho phép quản trị tốt hơn, hỗ trợ tuân thủ và bảo mật dữ liệu.

Nếu bạn có câu hỏi hoặc đề xuất, hãy gửi chúng trong phần bình luận.

Để biết thêm thông tin về việc chia sẻ dữ liệu Amazon Redshift do Lake Formation quản lý và kiểm soát truy cập dựa trên thẻ, hãy tham khảo Quản lý tập trung quyền truy cập và quyền chia sẻ dữ liệu Amazon Redshift với AWS Lake FormationDễ dàng quản lý hồ dữ liệu của bạn trên quy mô lớn bằng cách sử dụng kiểm soát truy cập dựa trên Thẻ của AWS Lake Formation.


Về các tác giả

Praveen Kumar là Kiến trúc sư giải pháp phân tích tại AWS với chuyên môn thiết kế, xây dựng và triển khai các nền tảng phân tích và dữ liệu hiện đại bằng cách sử dụng các dịch vụ gốc trên đám mây. Lĩnh vực anh quan tâm là công nghệ serverless, kho dữ liệu đám mây hiện đại, phát trực tuyến và ứng dụng ML.

Srividya Parthasarathy là Kiến trúc sư dữ liệu lớn cấp cao trong nhóm AWS Lake Formation. Cô thích xây dựng các giải pháp lưới dữ liệu và chia sẻ chúng với cộng đồng.

Phao-lô Villena là Kiến trúc sư giải pháp phân tích tại AWS có chuyên môn trong việc xây dựng các giải pháp phân tích và dữ liệu hiện đại để thúc đẩy giá trị kinh doanh. Anh làm việc với khách hàng để giúp họ khai thác sức mạnh của đám mây. Lĩnh vực anh ấy quan tâm là cơ sở hạ tầng dưới dạng mã, công nghệ không có máy chủ và viết mã bằng Python.

Mostafa Safipour là Kiến trúc sư giải pháp tại AWS có trụ sở tại Sydney. Anh ấy làm việc với khách hàng để hiện thực hóa kết quả kinh doanh bằng cách sử dụng công nghệ và AWS. Trong thập kỷ qua, ông đã giúp nhiều tổ chức lớn trong khu vực ANZ xây dựng khối lượng công việc dữ liệu, kỹ thuật số và doanh nghiệp của họ trên AWS.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img