Logo Zephyrnet

Quyền truy cập liên kết vào các cụm Amazon Redshift trong Khu vực AWS Trung Quốc với Dịch vụ liên kết Active Directory

Ngày:

Nhiều khách hàng đã quản lý danh tính người dùng thông qua nhà cung cấp danh tính (IdP) để có quyền truy cập đăng nhập một lần. Với IdP, chẳng hạn như Dịch vụ Liên kết Thư mục Hoạt động (AD FS), bạn có thể thiết lập quyền truy cập được liên kết vào Amazon RedShift cụm như một cơ chế để kiểm soát quyền đối với các đối tượng cơ sở dữ liệu theo nhóm nghiệp vụ. Điều này cung cấp trải nghiệm người dùng liền mạch và tập trung hóa việc quản lý xác thực và quyền cho người dùng cuối. Để biết thêm thông tin, hãy tham khảo loạt bài đăng trên blog “Liên kết quyền truy cập vào cụm Amazon Redshift của bạn với Dịch vụ Liên kết Thư mục Hoạt động (AD FS)” (phần 1, phần 2).

Do sự khác biệt trong việc triển khai Dịch vụ web của Amazon ở Trung Quốc, khách hàng phải điều chỉnh cấu hình cho phù hợp. Ví dụ: Các khu vực AWS Trung Quốc (Bắc Kinh và Ninh Hạ) nằm trong một khu vực riêng biệt Phân vùng AWS, do đó tất cả Tên tài nguyên Amazon (ARN) đều bao gồm hậu tố -cn. AWS Khu vực Trung Quốc cũng được lưu trữ tại một miền khác: www.amazonaws.cn.

Bài đăng này giới thiệu quy trình từng bước để thiết lập quyền truy cập liên kết vào Amazon Redshift trong các Khu vực AWS Trung Quốc. Nó chỉ ra những điểm khác biệt chính mà bạn cần chú ý và cung cấp hướng dẫn khắc phục sự cố cho các lỗi phổ biến.

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

Sơ đồ sau minh họa quá trình Ngôn ngữ đánh dấu xác nhận bảo mật 2.0 Quyền truy cập liên kết dựa trên (SAML) vào Amazon Redshift trong Khu vực AWS Trung Quốc. Quy trình làm việc bao gồm các bước chính sau:

  1. Máy khách SQL cung cấp tên người dùng và mật khẩu cho AD FS.
  2. AD FS xác thực thông tin đăng nhập và trả về một phản hồi SAML nếu thành công.
  3. Máy khách SQL thực hiện một cuộc gọi API tới Dịch vụ mã thông báo bảo mật AWS (AWS STS) sang đảm nhận vai trò ưu tiên với SAML.
  4. AWS STS xác thực phản hồi SAML dựa trên sự tin cậy lẫn nhau và trả về thông tin xác thực tạm thời nếu thành công.
  5. Máy khách SQL giao tiếp với Amazon Redshift để lấy lại một người dùng cơ sở dữ liệu với thông tin xác thực tạm thời, sau đó sử dụng nó để tham gia các nhóm cơ sở dữ liệu và kết nối với cơ sở dữ liệu được chỉ định.

Kiến trúc

Chúng tôi sắp xếp hướng dẫn theo các bước cấp cao sau:

  1. Định cấu hình ủy thác của bên dựa vào AD FS cho các Khu vực AWS Trung Quốc và xác định các quy tắc xác nhận quyền sở hữu cơ bản.
  2. Cung cấp một Quản lý truy cập và nhận dạng AWS (IAM) nhà cung cấp danh tính và các vai trò.
  3. Hoàn thành các quy tắc xác nhận quyền sở hữu còn lại của quỹ ủy thác dựa trên các tài nguyên IAM.
  4. Kết nối với Amazon Redshift bằng quyền truy cập liên hợp thông qua ứng dụng khách SQL dựa trên JDBC.

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

Bài đăng này giả định rằng bạn có các điều kiện tiên quyết sau:

  • Windows máy chủ 2016
  • Khả năng tạo người dùng và nhóm trong AD
  • Khả năng định cấu hình sự tin cậy của bên phụ thuộc và xác định các quy tắc xác nhận quyền sở hữu trong AD FS
  • Tài khoản AWS
  • Có đủ quyền để cung cấp vai trò, nhà cung cấp danh tính IAM, Đám mây riêng ảo Amazon (Amazon VPC) các tài nguyên liên quan và một cụm Amazon Redshift qua Bộ công cụ phát triển đám mây AWS (AWS CDK)

Định cấu hình AD FS dựa vào sự tin cậy của bên và xác định các quy tắc xác nhận quyền sở hữu

Sự tin cậy của bên phụ thuộc cho phép AWS và AD FS giao tiếp với nhau. Có thể định cấu hình hai ủy thác của bên phụ thuộc cho cả Khu vực AWS Trung Quốc và Khu vực AWS trong cùng AD FS tại cùng một thời điểm. Đối với các Khu vực AWS Trung Quốc, chúng tôi cần sử dụng Tài liệu siêu dữ liệu SAML at https://signin.amazonaws.cn/static/saml-metadata.xml. Giá trị nhận dạng của bên phụ thuộc cho AWS Khu vực Trung Quốc là urn:amazon:webservices:cn-north-1, trong khi đó đối với Các khu vực toàn cầu của AWS là urn:amazon:webservices. Ghi lại mã định danh này để sử dụng sau này trong bài đăng này.

Dựa vào XML siêu dữ liệu của bên

Thêm nhóm QUẢNG CÁO và người dùng

Với liên kết dựa trên SAML, người dùng cuối đảm nhận vai trò IAM và sử dụng nó để tham gia nhiều nhóm cơ sở dữ liệu (DB). Các quyền đối với các vai trò và nhóm DB đó có thể được quản lý hiệu quả bởi các nhóm AD. Chúng tôi sử dụng các tiền tố khác nhau trong tên nhóm AD để phân biệt chúng, giúp ánh xạ đến các vai trò và quy tắc xác nhận quyền sở hữu nhóm DB. Điều quan trọng là phải phân biệt chính xác hai loại nhóm QUẢNG CÁO vì chúng được ánh xạ tới các tài nguyên AWS khác nhau.

Chúng tôi tiếp tục hướng dẫn của chúng tôi với một ví dụ. Giả sử trong kinh doanh có hai vai trò: nhà khoa học dữ liệu và kỹ sư dữ liệu, và hai nhóm DB: ung thư và dược. Các nhà khoa học dữ liệu có thể tham gia cả hai nhóm và các kỹ sư dữ liệu chỉ có thể tham gia nhóm dược. Về phía AD, chúng tôi xác định một nhóm AD cho mỗi vai trò và nhóm. Về phía AWS, chúng tôi xác định một vai trò IAM cho mỗi vai trò và một nhóm Amazon Redshift DB cho mỗi nhóm DB. Giả sử Clement là một nhà khoa học dữ liệu và Jimmy là một kỹ sư dữ liệu, và cả hai đều đã được quản lý bởi AD. Sơ đồ sau đây minh họa mối quan hệ này.

Ánh xạ nhóm AD và người dùng tới vai trò IAM và nhóm DB

Bạn có thể tạo nhóm QUẢNG CÁO và người dùng với một trong hai Giao diện dòng lệnh AWS (AWS CLI) hoặc Bảng điều khiển quản lý AWS. Chúng tôi cung cấp các lệnh mẫu trong tệp README trong repo GitHub.

Thực hiện theo các bước phụ a đến o của Bước 2 trong Thiết lập xác thực Đăng nhập một lần JDBC hoặc ODBC với AD FS để thiết lập bên phụ thuộc có tài liệu siêu dữ liệu SAML chính xác cho các Khu vực AWS Trung Quốc và xác định ba quy tắc xác nhận quyền sở hữu đầu tiên (NameId, RoleSessionNameGet AD Groups). Chúng tôi tiếp tục sau khi nhà cung cấp danh tính IAM và các vai trò được cấp phép.

Cung cấp một nhà cung cấp danh tính IAM và các vai trò

Bạn thiết lập sự tin cậy cho AD với AWS bằng cách cấp phép cho nhà cung cấp danh tính IAM. Nhà cung cấp danh tính IAM và các vai trò giả định phải nằm trong một tài khoản AWS, nếu không, bạn sẽ nhận được thông báo lỗi sau trong quá trình truy cập liên kết: “Chính tồn tại bên ngoài tài khoản của Vai trò đang được đảm nhận.” Làm theo các bước sau để cung cấp tài nguyên:

  1. Tải xuống tệp siêu dữ liệu tại https://yourcompany.com/FederationMetadata/2007-06/FederationMetadata.xml từ máy chủ AD FS của bạn.
  2. Lưu nó cục bộ tại /tmp/FederationMetadata.xml.
  3. Kiểm tra mã AWS CDK trên GitHub.
  4. Sử dụng AWS CDK để triển khai ngăn xếp có tên redshift-cn:
export AWS_ACCOUNT=YOUR_AWS_ACCOUNT
export AWS_DEFAULT_REGION=cn-north-1
export AWS_PROFILE=YOUR_PROFILE cdk deploy redshift-cn --require-approval never

AWS CDK phiên bản phải là 2.0 hoặc mới hơn. Đối với mục đích thử nghiệm, bạn có thể sử dụng AdministratorAccess chính sách được quản lý để triển khai. Để sử dụng sản xuất, hãy sử dụng cấu hình có ít đặc quyền nhất.

Bảng sau đây tóm tắt các tài nguyên mà gói AWS CDK cung cấp.

Dịch vụ Tài nguyên Đếm Chú ý
Amazon VPC VPC 1 .
Mạng con 2 .
Cổng Internet 1 .
Bảng lộ trình 1 .
Nhóm bảo mật 1 .
IAM Nhà cung cấp danh tính SAML 1 .
Vai trò 3 1 vai trò dịch vụ cho cụm
2 vai trò liên kết
Amazon RedShift cụm 1 1 nút, dc2.large
Quản lý bí mật AWS Bí mật 1 .

Trong ví dụ này, Truy cập công cộng cài đặt của cụm Amazon Redshift được đặt thành Kích hoạt vì sự đơn giản. Tuy nhiên, trong môi trường sản xuất, bạn nên tắt cài đặt này và đặt cụm bên trong một nhóm mạng con riêng tư. Tham khảo Làm cách nào tôi có thể truy cập một cụm Amazon Redshift riêng từ máy cục bộ của mình để biết thêm thông tin chi tiết.

Định cấu hình một nhóm bảo mật

Thêm quy tắc đến cho địa chỉ IP của bạn để cho phép kết nối với cụm Amazon Redshift.

  1. Tìm nhóm bảo mật có tên RC Default Security Group.
  2. Lấy địa chỉ IP công khai của máy tính của bạn.
  3. Thêm quy tắc đến cho địa chỉ IP này và cổng mặc định cho Amazon Redshift 5439.

Hoàn thành các quy tắc xác nhận quyền sở hữu còn lại

Sau khi bạn cung cấp vai trò và nhà cung cấp danh tính IAM, hãy thêm quy tắc xác nhận quyền sở hữu để xác định vai trò SAML. Chúng tôi thêm quy tắc xác nhận quyền sở hữu của khách hàng với tên Roles. Nó tìm các nhóm AD có tiền tố role_ và thay thế nó bằng một chuỗi ARN kết hợp. Chú ý đến ARN của tài nguyên nơi phân vùng aws-cn. Thay thế AWS_ACCOUNT với ID tài khoản AWS của bạn. Bảng sau đây trình bày cách các nhóm AD đã chọn được chuyển đổi thành ARN vai trò IAM.

Nhóm QUẢNG CÁO đã Chọn ARN vai trò IAM đã chuyển đổi
role_data_scientist arn:aws-cn:iam::AWS_ACCOUNT:role/rc_data_scientist
role_data_engineer arn:aws-cn:iam::AWS_ACCOUNT:role/rc_data_engineer

Quy tắc xác nhận quyền sở hữu của bên dựa vào

Để thêm quy tắc xác nhận quyền sở hữu, hãy mở bảng điều khiển quản lý AD FS trong Windows Server của bạn và hoàn thành các bước sau:

  1. Chọn Dựa vào sự tin cậy của Đảng, sau đó chọn bên phụ thuộc cho AWS Trung Quốc.
  2. Chọn Chỉnh sửa chính sách phát hành xác nhận quyền sở hữu, sau đó chọn Thêm vai trò.
  3. trên Yêu cầu mẫu quy tắc menu, chọn Gửi yêu cầu bằng quy tắc tùy chỉnh.
  4. Trong Xác nhận tên quy tắc, đi vào Roles.
  5. Trong tạp chí Quy tắc tùy chỉnh , nhập như sau:
c:[Type == "http://temp/variable", Value =~ "(?i)^role_"]
=> issue(Type = "https://aws.amazon.com/SAML/Attributes/Role",
Value = RegExReplace(c.Value, "role_", "arn:aws-cn:iam::AWS_ACCOUNT:saml-provider/rc-provider,arn:aws-cn:iam::AWS_ACCOUNT:role/rc_"));

Các thông số tùy chọn of DbUser, AutoCreateDbGroups có thể được cung cấp thông qua các tham số kết nối JDBC hoặc các giá trị thuộc tính SAML. Lợi ích của liên kết người dùng là quản lý người dùng ở một nơi một cách tập trung. Do đó, DbUser giá trị phải được cung cấp tự động bởi thuộc tính SAML. Các AutoCreate tham số phải luôn luôn là true, nếu không, bạn phải tạo trước người dùng DB. cuối cùng DbGroups tham số có thể được cung cấp bởi các thuộc tính SAML với điều kiện là mối quan hệ đó được xác định trong AD.

Để tóm tắt, chúng tôi khuyên bạn nên cung cấp ít nhất DbUserAutoCreate trong các thuộc tính SAML, để người dùng cuối có thể tiết kiệm thời gian bằng cách soạn các chuỗi kết nối ngắn hơn. Trong ví dụ của chúng tôi, chúng tôi cung cấp cả ba tham số thông qua các thuộc tính SAML.

  1. Thêm quy tắc xác nhận quyền sở hữu của khách hàng có tên DbUser. Chúng tôi sử dụng địa chỉ email làm giá trị cho DbUser:
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
=> issue(store = "Active Directory",
types = ("https://redshift.amazon.com/SAML/Attributes/DbUser"),
query = ";mail;{0}", param = c.Value);

Bạn cũng có thể chọn tên tài khoản Người quản lý tài khoản bảo mật (SAM), thường là tên người dùng của địa chỉ email. Sử dụng địa chỉ email đóng một vai trò quan trọng trong việc thiết lập chính sách vai trò IAM. Chúng tôi xem lại vấn đề này sau.

  1. Thêm quy tắc xác nhận quyền sở hữu tùy chỉnh có tên AutoCreate:
=> issue(type = "https://redshift.amazon.com/SAML/Attributes/AutoCreate", value = "true");

  1. Thêm quy tắc xác nhận quyền sở hữu của khách hàng có tên DbGroups. Nó tìm tất cả các nhóm QUẢNG CÁO có tiền tố group_ và liệt kê chúng dưới dạng giá trị cho DbGroups:
c:[Type == "http://temp/variable", Value =~ "(?i)^group_"]
=> issue(Type = "https://redshift.amazon.com/SAML/Attributes/DbGroups", Value = c.Value);

Bạn có thể kiểm tra cài đặt trước đó có đúng không bằng cách nhận được phản hồi SAML qua trình duyệt của bạn.

  1. Truy cập https://yourcompany.com/adfs/ls/IdpInitiatedSignOn.aspx trên Máy chủ Windows của bạn, đăng nhập bằng người dùng clementvà kiểm tra xem các thuộc tính SAML sau có tồn tại hay không. Đối với người dùng jimmy, vai trò là rc_data_engineer và nhóm DB chỉ chứa group_pharmacy.
<AttributeStatement> <Attribute Name="https://aws.amazon.com/SAML/Attributes/RoleSessionName"> <AttributeValue>clement@yourcompany.com</AttributeValue> </Attribute> <Attribute Name="https://aws.amazon.com/SAML/Attributes/Role"> <AttributeValue>arn:aws-cn:iam::AWS_ACCOUNT:saml-provider/rc-provider,arn:aws-cn:iam::AWS_ACCOUNT:role/rc_data_scientist</AttributeValue> </Attribute> <Attribute Name="https://redshift.amazon.com/SAML/Attributes/DbUser"> <AttributeValue>clement@yourcompany.com</AttributeValue> </Attribute> <Attribute Name="https://redshift.amazon.com/SAML/Attributes/AutoCreate"> <AttributeValue>true</AttributeValue> </Attribute> <Attribute Name="https://redshift.amazon.com/SAML/Attributes/DbGroups"> <AttributeValue>group_pharmacy</AttributeValue> <AttributeValue>group_oncology</AttributeValue> </Attribute>
</AttributeStatement>

Các tên thuộc tính SAML trước đó được xác minh là hợp lệ cho các Khu vực AWS Trung Quốc. Các URL kết thúc bằng amazon.com. Không chính xác khi thay đổi chúng thành amazonaws.cn or amazon.cn.

Kết nối với Amazon Redshift bằng ứng dụng khách SQL

Chúng tôi sử dụng dựa trên JDBC SQL Workbench / J (Máy khách SQL) để kết nối với cụm Amazon Redshift. Amazon Redshift sử dụng một nhóm DB để thu thập người dùng DB. Các đặc quyền cơ sở dữ liệu được quản lý chung ở cấp độ nhóm. Trong bài đăng này, chúng tôi không đi sâu vào quản lý đặc quyền. Tuy nhiên, bạn cần tạo hai nhóm DB trước.

  1. Kết nối với cụm được cung cấp và tạo nhóm. Bạn có thể kết nối trên Bảng điều khiển quản lý AWS thông qua trình soạn thảo truy vấn bằng thông tin đăng nhập tạm thời hoặc thông qua ứng dụng khách SQL với người dùng cơ sở dữ liệu admin và mật khẩu. Mật khẩu được lưu trữ trong Quản lý bí mật AWS. Bạn có thể cần các quyền thích hợp cho các hoạt động trên.
create group group_oncology;
create group group_pharmacy;

  1. Làm theo hướng dẫn trong Kết nối với cụm của bạn bằng cách sử dụng SQL Workbench / J để tải xuống và cài đặt ứng dụng khách SQL và trình điều khiển Amazon Redshift JDBC.

Chúng tôi khuyên bạn nên Trình điều khiển JDBC phiên bản 2.1 với các thư viện phụ thuộc vào trình điều khiển AWS SDK.

  1. Kiểm tra xem cụm có thể kết nối thông qua điểm cuối của nó hay không. Tên người dùng chính là admin. Bạn truy xuất giá trị bí mật của mật khẩu của cụm thông qua Trình quản lý bí mật. Chỉ định DSILogLevel và LogPath đến thu thập nhật ký lái xe và giúp chẩn đoán. Chuỗi kết nối trông giống như đoạn mã sau. Thay thế CLUSTER_ENDPOINT với giá trị chính xác và xóa tất cả các dấu ngắt dòng. Chúng tôi chia dòng để dễ đọc.
jdbc:redshift://CLUSTER_ENDPOINT.cn-north-1.redshift.amazonaws.com.cn:5439/main
;ssl_insecure=true
;DSILogLevel=3
;LogPath=/tmp

Đối với Khu vực AWS Trung Quốc, một tùy chọn trình điều khiển JDBC bổ sung loginToRp phải được thiết lập khi bạn thiết lập một bên tin cậy riêng cho các Khu vực AWS Trung Quốc. Nếu một người dùng AD được ánh xạ đến nhiều hơn một vai trò AWS, trong chuỗi kết nối, hãy sử dụng preferred_role để chỉ định vai trò chính xác để đảm nhận cho quyền truy cập liên kết.

  1. Sao chép trực tiếp vai trò ARN và chú ý đến aws-cn vách ngăn.

Nếu người dùng chỉ được ánh xạ đến một vai trò, có thể bỏ qua tùy chọn này.

  1. Thay thế CLUSTER_ID với định danh cụm chính xác. Đối với tên người dùng, hãy nhập yourcompanyclement; đối với mật khẩu, hãy nhập thông tin đăng nhập từ AD:
jdbc:redshift:iam://CLUSTER_ID:cn-north-1/main
;ssl_insecure=true
;DSILogLevel=3
;LogPath=/tmp
;loginToRp=urn:amazon:webservices:cn-north-1
;plugin_name=com.amazon.redshift.plugin.AdfsCredentialsProvider
;idp_host=adfsserver.yourcompany.com
;preferred_role=arn:aws-cn:iam::AWS_ACCOUNT:role/rc_data_scientist

  1. Khi bạn đã kết nối, hãy chạy câu lệnh SQL như được hiển thị trong ảnh chụp màn hình sau.

Người dùng bắt đầu bằng IAMA cho biết rằng người dùng được kết nối với quyền truy cập liên kết và được tạo tự động.

SQL Workbench để truy vấn người dùng

  1. Là một bước tùy chọn, trong chuỗi kết nối, bạn có thể đặt DbUser, AutoCreateDbGroups thông số.

Các tham số từ chuỗi kết nối nằm trước các tham số từ các thuộc tính SAML. Chúng tôi khuyên bạn nên đặt ít nhất DbUserAutoCreate thông qua các thuộc tính SAML. Nếu khó quản lý các nhóm DB trong người dùng AD hoặc bạn muốn sự linh hoạt, hãy chỉ định DbGroups trong chuỗi kết nối. Xem đoạn mã sau:

jdbc:redshift:iam://CLUSTER_ID:cn-north-1/main
;ssl_insecure=true
;DSILogLevel=3
;LogPath=/tmp
;loginToRp=urn:amazon:webservices:cn-north-1
;plugin_name=com.amazon.redshift.plugin.AdfsCredentialsProvider
;idp_host=adfsserver.yourcompany.com
;preferred_role=arn:aws-cn:iam::AWS_ACCOUNT:role/rc_data_scientist
;DbUser=clement@yourcompany.com
;AutoCreate=true
;DbGroups=group_oncology

Sử dụng email hoặc tên tài khoản SAM làm người dùng DB

Chính sách vai trò tuân theo chính sách ví dụ về việc sử dụng GetClusterCredentials. Nó còn cho phép redshift:DescribeClusters trên cụm vì vai trò truy vấn điểm cuối cụm và cổng dựa trên định danh và Vùng của nó. Để đảm bảo rằng người dùng DB giống với người dùng AD, trong bài đăng này, chúng tôi sử dụng điều kiện sau để kiểm tra, ROLE_IDđịnh danh duy nhất của vai trò:

{"StringEqualsIgnoreCase": {"aws:userid": "ROLD_ID:${redshift:DbUser}"}}

Chính sách mẫu sử dụng điều kiện sau:

{"StringEqualsIgnoreCase": {"aws:userid": "ROLD_ID:${redshift:DbUser}@yourcompany.com"}}

Sự khác biệt là rõ ràng. Các aws:userid chứa RoleSessionName, là địa chỉ email. Tên tài khoản SAM là chuỗi trước @ trong địa chỉ email. Vì tham số chuỗi kết nối nằm trước tham số thuộc tính SAML, chúng tôi tóm tắt các trường hợp có thể xảy ra như sau:

  • Nếu thuộc tính SAML chứa DbUser:
    • Nếu giá trị điều kiện chứa hậu tố miền:
      • Nếu DbUser Giá trị thuộc tính SAML là một địa chỉ email, DbUser phải nằm trong chuỗi kết nối không có hậu tố miền.
      • Nếu DbUser Giá trị thuộc tính SAML là tên tài khoản SAM, DbUser có thể được bỏ qua trong chuỗi kết nối. Nếu không, giá trị không được chứa hậu tố tên miền.
    • Nếu giá trị điều kiện không chứa hậu tố tên miền:
      • Nếu DbUser Giá trị thuộc tính SAML là một địa chỉ email, DbUser có thể được bỏ qua trong chuỗi kết nối. Nếu không, giá trị phải chứa hậu tố tên miền.
      • Nếu DbUser Giá trị thuộc tính SAML là tên tài khoản SAM, DbUser phải nằm trong chuỗi kết nối có hậu tố tên miền.
  • Nếu thuộc tính SAML không chứa DbUser:
    • Nếu giá trị điều kiện chứa hậu tố tên miền, DbUser phải nằm trong chuỗi kết nối không có hậu tố miền.
    • Nếu giá trị điều kiện không chứa hậu tố tên miền, DbUser có thể được bỏ qua trong chuỗi kết nối, bởi vì RoleSessionName giá trị mà địa chỉ email hoạt động như DbUser. Nếu không, giá trị phải chứa hậu tố tên miền.

Quy trình đánh giá điều kiện chính sách IAM

Xử lý sự cố

Truy cập liên kết vào Amazon Redshift là một quá trình không hề nhỏ. Tuy nhiên, nó bao gồm các bước nhỏ hơn mà chúng ta có thể phân chia và chinh phục khi có vấn đề xảy ra. Tham khảo sơ đồ truy cập trong phần tổng quan về giải pháp. Chúng ta có thể chia quá trình này thành ba cụm từ:

  1. Liên kết dựa trên SAML có thành công không? Xác minh điều này bằng cách truy cập trang đăng nhập một lần của AD FS và đảm bảo rằng bạn có thể đăng nhập vào bảng điều khiển với vai trò được liên kết. Bạn có định cấu hình bên phụ thuộc bằng tài liệu siêu dữ liệu cụ thể của AWS Trung Quốc không? Nhận phản hồi SAML và kiểm tra xem điểm đến có phải là https://signin.amazonaws.cn/saml. ARN của nhà cung cấp SAML và ARN của vai trò IAM có chính xác không? Kiểm tra xem mối quan hệ tin cậy của vai trò có chứa giá trị chính xác cho SAML:aud. Để biết các điểm kiểm tra khả thi khác, hãy tham khảo Khắc phục sự cố liên kết SAML 2.0 với AWS.
  2. Các chính sách vai trò có đúng không? Nếu liên kết dựa trên SAML thành công, hãy kiểm tra các chính sách vai trò có đúng không. So sánh của bạn với những người được cung cấp bởi bài đăng này. Bạn đã sử dụng aws Ở đâu aws-cn nên được sử dụng? Nếu điều kiện chính sách chứa hậu tố tên miền, thì đó có phải là hậu tố tên miền chính xác không? Bạn có thể lấy hậu tố tên miền đang sử dụng nếu bạn gặp lỗi rằng vai trò giả định không được phép thực hiện một hành động.
  3. Máy khách SQL có kết nối thành công không? Định danh cụm có chính xác không? Đảm bảo rằng chuỗi kết nối của bạn chứa loginToRp tùy chọn và trỏ đến bên phụ thuộc AWS Trung Quốc. Nếu nhiều vai trò IAM được ánh xạ, hãy đảm bảo preferred_role là một trong số họ có vai trò chính xác ARN. Bạn có thể nhận danh sách các vai trò trong phản hồi SAML. Cố gắng thiết lập ssl_insecure thành true tạm thời để gỡ lỗi. Kiểm tra phần phụ trước và đảm bảo rằng DbUser được sử dụng đúng cách hoặc được thiết lập theo DbUser Thuộc tính SAML và giá trị điều kiện cho aws:user. Bật nhật ký trình điều khiển và nhận các gợi ý gỡ lỗi ở đó. Đôi khi bạn có thể cần phải khởi động lại máy khách SQL để xóa bộ nhớ cache và thử lại.

An ninh

Trong môi trường sản xuất, chúng tôi khuyên bạn nên áp dụng các cài đặt bảo mật sau đây, những cài đặt này không được sử dụng trong bài đăng này.

Đối với cụm Amazon Redshift, hãy hoàn thành các bước sau:

  • Tắt tùy chọn có thể truy cập công khai và đặt cụm bên trong một nhóm mạng con riêng tư hoặc bị cô lập
  • Mã hóa cụm, chẳng hạn, với một khách hàng được quản lý Dịch vụ quản lý khóa AWS (AWS KMS) chính
  • Bật định tuyến VPC nâng cao để mạng không rời khỏi VPC của bạn
  • Định cấu hình cụm thành yêu cầu Lớp cổng bảo mật (SSL) và sử dụng xác thực SSL một chiều

Đối với các vai trò liên kết IAM:

  • Chỉ định các nhóm DB chính xác cho hành động redshift:JoinGroup. Nếu bạn muốn sử dụng ký tự đại diện, hãy đảm bảo rằng nó không cho phép các nhóm DB không mong muốn.
  • kiểm tra StringEquals cho aws:user chống lại ID vai trò cùng với người dùng Amazon Redshift DB. Điều kiện này có thể được kiểm tra GetClusterCredentials, CreateClusterUservà JoinGroup các hành động. Tham khảo mẫu mã để biết mã chi tiết.

Trong Amazon Redshift, nhóm DB được sử dụng để quản lý các đặc quyền cho một tập hợp người dùng DB. Người dùng DB tham gia một số nhóm DB trong phiên đăng nhập và được cấp các đặc quyền liên quan đến các nhóm. Như chúng ta đã thảo luận trước đây, bạn có thể sử dụng giá trị thuộc tính SAML hoặc thuộc tính kết nối để chỉ định các nhóm DB. Trình điều khiển Amazon Redshift thích giá trị từ chuỗi kết nối hơn giá trị từ thuộc tính SAML. Do đó, người dùng cuối có thể ghi đè các nhóm DB trong chuỗi kết nối. Do đó, để hạn chế các đặc quyền mà người dùng DB có thể được cấp, chính sách vai trò IAM phải hạn chế nhóm DB nào mà người dùng DB được phép tham gia một cách an toàn, nếu không có thể có rủi ro bảo mật. Đoạn mã chính sách sau đây cho thấy một rủi ro như vậy. Luôn theo dõi nguyên tắc đặc quyền ít nhất khi xác định chính sách cấp phép.

{ "Effect": "Allow", "Action": "redshift:JoinGroup", "Resource": "*"
}

Làm sạch

Chạy lệnh sau để phá hủy tài nguyên và ngừng phát sinh phí:

cdk destroy redshift-cn --force

Xóa người dùng và nhóm được tạo trong AD FS. Cuối cùng, xóa bỏ ủy thác của bên phụ thuộc cho AWS China Khu vực trong AD FS của bạn nếu bạn không cần nữa.

Kết luận

Trong bài đăng này, chúng tôi đã hướng dẫn bạn cách kết nối với Amazon Redshift ở Trung Quốc với quyền truy cập liên kết dựa trên AD FS. Các Khu vực AWS Trung Quốc nằm trong một phân vùng khác với các Khu vực AWS khác, vì vậy bạn phải đặc biệt chú ý trong quá trình cấu hình. Tóm lại, bạn cần kiểm tra ARN tài nguyên AWS với aws-cn phân vùng, liên kết dựa trên SAML với tài liệu siêu dữ liệu cụ thể của AWS Trung Quốc và trình điều khiển Amazon Redshift JDBC với các tùy chọn kết nối bổ sung. Bài đăng này cũng thảo luận về các trường hợp sử dụng khác nhau cho redshift:Dbuser và cung cấp các đề xuất khắc phục sự cố phổ biến.

Để biết thêm thông tin, hãy tham khảo Hướng dẫn quản lý cụm Amazon Redshift. Tìm mã được sử dụng cho bài đăng này trong phần sau Kho GitHub.


Về các tác giả


Clement YuanVăn Quân Nguyên
là Kiến trúc sư Cloud Infra trong Dịch vụ Chuyên nghiệp của AWS có trụ sở tại Thành Đô, Trung Quốc. Anh ấy làm việc với nhiều khách hàng khác nhau, từ các công ty khởi nghiệp đến các doanh nghiệp quốc tế, giúp họ xây dựng và triển khai các giải pháp với công nghệ đám mây hiện đại và đạt được nhiều thành tựu hơn trong các hoạt động khám phá đám mây của họ. Anh ấy thích đọc thơ và đi du lịch vòng quanh thế giới khi rảnh rỗi.

Khoa NguyễnKhoa Nguyễn là một Kiến trúc sư Dữ liệu lớn trong Dịch vụ Chuyên nghiệp của AWS. Ông làm việc với các khách hàng doanh nghiệp lớn và các đối tác AWS để thúc đẩy kết quả kinh doanh của khách hàng bằng cách cung cấp kiến ​​thức chuyên môn về Dữ liệu lớn và các dịch vụ AWS.

Lý Dạ Vi là Kiến trúc sư dữ liệu trong Dịch vụ Chuyên nghiệp của AWS có trụ sở tại Thượng Hải, Trung Quốc. Anh ấy làm việc với nhiều khách hàng doanh nghiệp khác nhau để thiết kế và xây dựng các giải pháp kho dữ liệu và hồ dữ liệu trên AWS. Trong thời gian rảnh rỗi, anh ấy thích đọc sách và tập thể thao.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img

Trò chuyện trực tiếp với chúng tôi (chat)

Chào bạn! Làm thế nào để tôi giúp bạn?