Logo Zephyrnet

Quản lý tư cách thành viên nhóm và người dùng trên Amazon QuickSight bằng các sự kiện SCIM được tạo trong Trung tâm nhận dạng IAM với Azure AD

Ngày:

Amazon QuickSight là dịch vụ kinh doanh thông minh (BI) dựa trên đám mây, có thể mở rộng, hỗ trợ liên kết danh tính. Quản lý truy cập và nhận dạng AWS (IAM) cho phép các tổ chức sử dụng danh tính được quản lý trong nhà cung cấp danh tính doanh nghiệp (IdP) của họ và đăng nhập một lần (SSO) liên kết với QuickSight. Vì ngày càng có nhiều tổ chức xây dựng kho lưu trữ nhận dạng người dùng tập trung với tất cả các ứng dụng của họ, bao gồm ứng dụng tại chỗ, ứng dụng của bên thứ ba và ứng dụng trên AWS, nên họ cần một giải pháp để tự động hóa việc cung cấp người dùng cho các ứng dụng này và giữ cho các thuộc tính của họ được đồng bộ hóa với các ứng dụng tập trung của họ. cửa hàng nhận dạng người dùng.

Khi kiến ​​trúc kho lưu trữ người dùng, một số tổ chức quyết định tổ chức người dùng của họ theo nhóm hoặc sử dụng các thuộc tính (chẳng hạn như tên bộ phận) hoặc kết hợp cả hai. Nếu tổ chức của bạn sử dụng Microsoft Azure Active Directory (Azure AD) để xác thực tập trung và sử dụng các thuộc tính người dùng của mình để tổ chức người dùng, thì bạn có thể bật liên kết trên tất cả các tài khoản QuickSight cũng như quản lý người dùng và tư cách thành viên nhóm của họ trong QuickSight bằng các sự kiện được tạo trong AWS nền tảng. Điều này cho phép quản trị viên hệ thống quản lý tập trung các quyền của người dùng từ Azure AD. Việc cấp phép, cập nhật và hủy cấp phép người dùng cũng như nhóm trong QuickSight không còn yêu cầu quản lý ở hai nơi với giải pháp này. Điều này đảm bảo rằng người dùng và nhóm trong QuickSight nhất quán với thông tin trong Azure AD thông qua đồng bộ hóa tự động.

Trong bài đăng này, chúng tôi sẽ hướng dẫn bạn các bước cần thiết để định cấu hình SSO được liên kết giữa QuickSight và Azure AD qua Trung tâm nhận dạng AWS IAM (Kế thừa Đăng nhập một lần AWS) nơi bật tính năng cung cấp tự động cho Azure AD. Chúng tôi cũng chứng minh cập nhật tư cách thành viên nhóm và người dùng tự động bằng cách sử dụng sự kiện Hệ thống quản lý danh tính giữa các miền (SCIM).

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

Sơ đồ sau đây minh họa kiến ​​trúc giải pháp và luồng người dùng.

kiến trúc giải pháp và luồng người dùng.

Trong bài đăng này, Trung tâm nhận dạng IAM cung cấp một vị trí trung tâm để tập hợp quản trị người dùng và quyền truy cập của họ vào tài khoản AWS và ứng dụng đám mây. Azure AD là kho lưu trữ người dùng và được định cấu hình làm IdP bên ngoài trong Trung tâm nhận dạng IAM. Trong giải pháp này, chúng tôi chứng minh việc sử dụng hai thuộc tính người dùng (department, jobTitle) cụ thể trong Azure AD. Trung tâm nhận dạng IAM hỗ trợ cung cấp tự động (đồng bộ hóa) thông tin nhóm và người dùng từ Azure AD vào Trung tâm nhận dạng IAM bằng giao thức SCIM v2.0. Với giao thức này, các thuộc tính từ Azure AD được chuyển đến Trung tâm nhận dạng IAM, thuộc tính này kế thừa thuộc tính đã xác định cho hồ sơ của người dùng trong Trung tâm nhận dạng IAM. IAM Identity Center cũng hỗ trợ liên kết danh tính với SAML (Ngôn ngữ đánh dấu xác nhận bảo mật) 2.0. Điều này cho phép Trung tâm nhận dạng IAM xác thực danh tính bằng Azure AD. Sau đó, người dùng có thể SSO vào các ứng dụng hỗ trợ SAML, bao gồm cả QuickSight. Nửa đầu của bài đăng này tập trung vào cách định cấu hình từ đầu đến cuối (xem Luồng đăng nhập trong sơ đồ).

Tiếp theo, thông tin người dùng bắt đầu được đồng bộ hóa giữa Azure AD và IAM Identity Center thông qua giao thức SCIM. Bạn có thể tự động tạo người dùng trong QuickSight bằng cách sử dụng AWS Lambda chức năng được kích hoạt bởi CreateUser Sự kiện SCIM bắt nguồn từ Trung tâm nhận dạng IAM, được ghi lại trong Sự kiện Amazon. Trong cùng một chức năng Lambda, sau đó, bạn có thể cập nhật tư cách thành viên của người dùng bằng cách thêm vào nhóm được chỉ định (có tên bao gồm hai thuộc tính người dùng: department-jobTitle, nếu không thì hãy tạo nhóm nếu nhóm chưa tồn tại trước khi thêm thành viên.

Trong bài viết này lược bỏ phần tự động hóa này vì sẽ thừa với nội dung thảo luận ở các phần sau.

Bài đăng này khám phá và chứng minh một UpdateUser Sự kiện SCIM được kích hoạt bởi bản cập nhật hồ sơ người dùng trên Azure AD. Sự kiện được ghi lại trong EventBridge, gọi ra hàm Lambda để cập nhật tư cách thành viên nhóm trong QuickSight (xem Luồng cập nhật trong sơ đồ). Bởi vì một người dùng nhất định được cho là chỉ thuộc về một nhóm tại một thời điểm trong ví dụ này, hàm sẽ thay thế tư cách thành viên nhóm hiện tại của người dùng bằng tư cách thành viên mới.

Trong Phần I, bạn đã thiết lập SSO tới QuickSight từ Azure AD qua Trung tâm nhận dạng IAM (quy trình đăng nhập):

  1. Định cấu hình Azure AD làm IdP bên ngoài trong Trung tâm nhận dạng IAM.
  2. Thêm và định cấu hình ứng dụng Trung tâm nhận dạng IAM trong Azure AD.
  3. Hoàn tất cấu hình Trung tâm nhận dạng IAM.
  4. Thiết lập cung cấp tự động SCIM trên cả Trung tâm nhận dạng Azure AD và IAM, đồng thời xác nhận trong Trung tâm nhận dạng IAM.
  5. Thêm và định cấu hình ứng dụng QuickSight trong Trung tâm nhận dạng IAM.
  6. Định cấu hình vai trò IAM liên kết SAML IdP và SAML 2.0.
  7. Cấu hình các thuộc tính trong ứng dụng QuickSight.
  8. Tạo người dùng, nhóm và thành viên nhóm theo cách thủ công thông qua Giao diện dòng lệnh AWS (AWS CLI) hoặc API.
  9. Xác minh cấu hình bằng cách đăng nhập vào QuickSight từ cổng Trung tâm nhận dạng IAM.

Trong Phần II, bạn đã thiết lập tính năng tự động hóa để thay đổi tư cách thành viên nhóm khi có sự kiện SCIM (quy trình cập nhật):

  1. Hiểu các sự kiện SCIM và các mẫu sự kiện cho EventBridge.
  2. Tạo ánh xạ thuộc tính cho tên nhóm.
  3. Tạo một hàm Lambda.
  4. Thêm quy tắc EventBridge để kích hoạt sự kiện.
  5. Xác minh cấu hình bằng cách thay đổi giá trị thuộc tính người dùng tại Azure AD.

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

Đối với hướng dẫn này, bạn nên có các điều kiện tiên quyết sau:

  • Trung tâm nhận dạng IAM. Để biết hướng dẫn, hãy tham khảo Bước 1–2 trong Hướng dẫn bắt đầu về Trung tâm nhận dạng AWS IAM.
  • Đăng ký tài khoản QuickSight.
  • Hiểu biết cơ bản về IAM và các đặc quyền cần thiết để tạo IAM IdP, vai trò và chính sách.
  • Đăng ký Azure AD. Bạn cần ít nhất một người dùng có các thuộc tính sau để được đăng ký trong Azure AD:
    • userPrincipalName – Trường bắt buộc đối với người dùng Azure AD.
    • tên hiển thị – Trường bắt buộc đối với người dùng Azure AD.
    • email – Trường bắt buộc để Trung tâm nhận dạng IAM hoạt động với QuickSight.
    • công việc – Được sử dụng để phân bổ người dùng vào nhóm
    • bộ – Được sử dụng để phân bổ người dùng vào nhóm.
    • họ – Trường tùy chọn.
    • họ – Trường tùy chọn.

Phần I: Thiết lập SSO tới QuickSight từ Azure AD qua IAM Identity Center

Phần này trình bày các bước để thiết lập quy trình đăng nhập.

Định cấu hình IdP bên ngoài dưới dạng Azure AD trong Trung tâm nhận dạng IAM

Để định cấu hình IdP bên ngoài của bạn, hãy hoàn thành các bước sau:

  1. Trên bảng điều khiển IAM Identity Center, hãy chọn Cài đặt.
  2. Chọn Hoạt động trên nguồn nhận dạng tab, sau đó chọn Thay đổi nguồn nhận dạng.
  3. Chọn Nhà cung cấp danh tính bên ngoài, sau đó chọn Sau.

Siêu dữ liệu IdP được hiển thị. Giữ tab trình duyệt này mở.

Thêm và định cấu hình ứng dụng Trung tâm nhận dạng IAM trong Azure AD

Để thiết lập ứng dụng Trung tâm nhận dạng IAM của bạn, hãy hoàn tất các bước sau:

  1. Mở một tab trình duyệt mới.
  2. Đăng nhập vào cổng Azure AD bằng thông tin xác thực quản trị viên Azure của bạn.
  3. Theo Dịch vụ Azure, chọn Azure Active Directory.
  4. Trong ngăn dẫn hướng, dưới Quản lý, chọn Ứng dụng doanh nghiệp, sau đó chọn Ứng dụng mới.
  5. Trong tạp chí Duyệt Azure AD Galley phần, tìm kiếm Trung tâm nhận dạng IAM, sau đó chọn Trung tâm nhận dạng AWS IAM (kế thừa AWS Single Sign-On).
  6. Nhập tên cho ứng dụng (trong bài viết này, chúng tôi sử dụng IIC-QuickSight) và lựa chọn Tạo.
  7. Trong tạp chí Quản lý phần, chọn Dấu hiệu duy nhất trên, sau đó chọn SAML.
  8. Trong tạp chí Chỉ định người dùng và nhóm phần, chọn Chỉ định người dùng và nhóm.
  9. Chọn Thêm người dùng/nhóm và thêm ít nhất một người dùng.
  10. Chọn người sử dang như vai trò của nó.
  11. Trong tạp chí Thiết lập đăng nhập một lần trên phần, chọn Bắt đầu.
  12. Trong tạp chí Cấu hình SAML cơ bản phần, chọn Chỉnh sửa, và điền vào các tham số và giá trị sau:
  13. Định danh - Giá trị trong URL nhà phát hành Trung tâm nhận dạng IAM trường.
  14. URL trả lời - Giá trị trong URL dịch vụ khách hàng xác nhận của trung tâm nhận dạng IAM (ACS) trường.
  15. Đăng nhập vào URL - Để trống.
  16. Trạng thái chuyển tiếp - Để trống.
  17. URL đăng xuất - Để trống.
  18. Chọn Lưu.

Cấu hình sẽ giống như ảnh chụp màn hình sau.

cấu hình

  1. Trong tạp chí Chứng chỉ SAML phần, tải về XML siêu dữ liệu liên kết tập tin và Giấy chứng nhận (Thô) tập tin.
    Tệp XML siêu dữ liệu liên kết và tệp chứng chỉ (thô)

Hiện tại, bạn đã thiết lập xong cấu hình Azure AD SSO. Sau này, bạn sẽ quay lại trang này để định cấu hình cấp phép tự động, vì vậy hãy luôn mở tab trình duyệt này.

Hoàn tất cấu hình Trung tâm nhận dạng IAM

Hoàn tất cấu hình IAM Identity Center của bạn theo các bước sau:

  1. Quay lại tab trình duyệt cho bảng điều khiển Trung tâm nhận dạng IAM mà bạn đã mở ở bước trước.
  2. Trong Siêu dữ liệu SAML của IdP theo Siêu dữ liệu nhà cung cấp danh tính phần, chọn Chọn tập tin.
  3. Chọn tệp siêu dữ liệu đã tải xuống trước đó (IIC-QuickSight.xml).
  4. Trong chứng chỉ IdP theo Siêu dữ liệu nhà cung cấp danh tính phần, chọn Chọn tập tin.
  5. Chọn tệp chứng chỉ đã tải xuống trước đó (IIC-QuickSight.cer).
  6. Chọn Sau.
  7. Nhập CHẤP NHẬN, sau đó chọn Thay đổi nguồn nhà cung cấp danh tính.

Thiết lập cung cấp tự động SCIM trên cả Trung tâm nhận dạng Azure AD và IAM

Phương pháp cung cấp của bạn vẫn được đặt là Hướng dẫn sử dụng (không phải SCIM). Trong bước này, chúng tôi bật tính năng cung cấp tự động để Trung tâm nhận dạng IAM nhận biết được người dùng, điều này cho phép liên kết danh tính với QuickSight.

  1. Trong tạp chí Cấp phép tự động phần, chọn Kích hoạt tính năng.
    chọn Bật
  2. Chọn Truy cập thẻ để hiển thị mã thông báo của bạn.
    mã thông báo truy cập
  3. Quay lại tab trình duyệt (Azure AD) mà bạn vẫn mở ở Bước 1.
  4. Trong tạp chí Quản lý phần, chọn Ứng dụng doanh nghiệp.
  5. Chọn IIC-QuickSight, sau đó chọn Cung cấp.
  6. Chọn Tự động in Chế độ cung cấp và nhập các giá trị sau:
  7. URL đối tượng thuê - Giá trị trong điểm cuối SCIM trường.
  8. Mã thông báo bí mật - Giá trị trong Truy cập thẻ trường.
  9. Chọn Kiểm tra kết nối.
  10. Sau khi kết nối thử nghiệm hoàn tất thành công, hãy đặt Trạng thái cung cấp đến On.
    đặt Trạng thái cung cấp thành Bật
  11. Chọn Lưu.
  12. Chọn Bắt đầu cung cấp để bắt đầu cung cấp tự động bằng giao thức SCIM.

Khi quá trình cung cấp hoàn tất, nó sẽ dẫn đến việc chuyển một hoặc nhiều người dùng từ Azure AD sang Trung tâm nhận dạng IAM. Ảnh chụp màn hình sau đây hiển thị những người dùng đã được cấp phép trong Trung tâm nhận dạng IAM.

người dùng đã được cấp phép trong Trung tâm nhận dạng IAM

Lưu ý rằng khi cung cấp SCIM này, người dùng trong QuickSight phải được tạo bằng chức năng Lambda được kích hoạt bởi sự kiện bắt nguồn từ Trung tâm nhận dạng IAM. Trong bài đăng này, chúng tôi tạo tư cách thành viên nhóm và người dùng thông qua AWS CLI (Bước 8).

Thêm và định cấu hình ứng dụng QuickSight trong Trung tâm nhận dạng IAM

Trong bước này, chúng tôi tạo ứng dụng QuickSight trong Trung tâm nhận dạng IAM. Bạn cũng định cấu hình nhà cung cấp IAM SAML, vai trò và chính sách để ứng dụng hoạt động. Hoàn thành các bước sau:

  1. Trên bảng điều khiển Trung tâm nhận dạng IAM, trên Ứng dụng trang, chọn Thêm ứng dụng.
  2. Trong Ứng dụng tích hợp sẵn Dưới Chọn một ứng dụng, đi vào quicksight.
  3. Chọn Amazon QuickSight, sau đó chọn Sau.
  4. Nhập tên cho Tên hiển thị, Chẳng hạn như Amazon QuickSight.
  5. Chọn Tải về Dưới Tệp siêu dữ liệu SAML của Trung tâm nhận dạng IAM và lưu nó vào máy tính của bạn.
  6. Để nguyên tất cả các trường khác và lưu cấu hình.
  7. Mở ứng dụng bạn vừa tạo, sau đó chọn Chỉ định người dùng.

Những người dùng được cung cấp qua SCIM trước đó sẽ được liệt kê.

  1. Chọn tất cả người dùng để gán cho ứng dụng.

Định cấu hình SAML IdP và vai trò IAM liên kết SAML 2.0

Để thiết lập IAM SAML IdP của bạn cho Trung tâm nhận dạng IAM và vai trò IAM, hãy hoàn thành các bước sau:

  1. Trên bảng điều khiển IAM, trong ngăn dẫn hướng, hãy chọn Nhà cung cấp danh tính, sau đó chọn Thêm nhà cung cấp.
  2. Chọn SAML as Loại nhà cung cấp, và nhập vào Azure-IIC-QS as Tên nhà cung cấp.
  3. Theo Tài liệu siêu dữ liệu, chọn Chọn tập tin và tải lên tệp siêu dữ liệu mà bạn đã tải xuống trước đó.
  4. Chọn Thêm nhà cung cấp để lưu cấu hình.
  5. Trong ngăn dẫn hướng, chọn Vai trò, sau đó chọn Tạo vai trò.
  6. Trong Loại thực thể đáng tin cậy, lựa chọn Liên kết SAML 2.0.
  7. Trong Chọn nhà cung cấp SAML 2.0, chọn nhà cung cấp SAML mà bạn đã tạo, sau đó chọn Cho phép truy cập Bảng điều khiển quản lý AWS có lập trình và.
  8. Chọn Sau.
  9. trên Thêm quyền trang, chọn Sau.

Trong bài đăng này, chúng tôi tạo người dùng QuickSight thông qua lệnh AWS CLI, do đó chúng tôi không tạo bất kỳ chính sách cấp phép nào. Tuy nhiên, nếu tính năng tự cung cấp trong QuickSight được yêu cầu, chính sách cấp phép cho CreateReader, CreateUserCreateAdmin hành động (tùy thuộc vào vai trò của người dùng QuickSight) là bắt buộc.

  1. trên Đặt tên, đánh giá và tạo trang, dưới Chi tiết vai trò, đi vào qs-reader-azure cho vai trò
  2. Chọn Tạo vai trò.
  3. Lưu ý ARN của vai trò.

Bạn sử dụng ARN để định cấu hình các thuộc tính trong ứng dụng Trung tâm nhận dạng IAM của mình.

Định cấu hình thuộc tính trong ứng dụng QuickSight

Để liên kết IAM SAML IdP và vai trò IAM với ứng dụng QuickSight trong Trung tâm nhận dạng IAM, hãy hoàn thành các bước sau:

  1. Trên bảng điều khiển IAM Identity Center, trong ngăn điều hướng, hãy chọn Ứng dụng.
  2. Chọn hình ba gạch Amazon QuickSight ứng dụng và trên Hoạt động menu, chọn Chỉnh sửa ánh xạ thuộc tính.
  3. Chọn Thêm ánh xạ thuộc tính mới.
  4. Định cấu hình ánh xạ trong bảng sau.
Thuộc tính người dùng trong ứng dụng Ánh xạ tới giá trị chuỗi này hoặc thuộc tính người dùng trong Trung tâm nhận dạng IAM
Tiêu Đề ${user:email}
https://aws.amazon.com/SAML/Attributes/RoleSessionName ${user:email}
https://aws.amazon.com/SAML/Attributes/Role arn:aws:iam::<ACCOUNTID>:role/qs-reader-azure,arn:aws:iam::<ACCOUNTID>:saml-provider/Azure-IIC-QS
https://aws.amazon.com/SAML/Attributes/PrincipalTag:Email ${user:email}

Lưu ý các giá trị sau:

  • Thay thế với ID tài khoản AWS của bạn.
  • PrincipalTag:Email dành cho tính năng đồng bộ hóa email dành cho người dùng tự cấp phép cần được bật trên trang quản trị QuickSight. Trong bài đăng này, không bật tính năng này vì chúng tôi đăng ký người dùng bằng lệnh AWS CLI.
  1. Chọn Lưu các thay đổi.

Tạo thành viên người dùng, nhóm và nhóm với AWS CLI

Như đã mô tả trước đó, người dùng và nhóm trong QuickSight được tạo thủ công trong giải pháp này. Chúng tôi tạo chúng thông qua các lệnh AWS CLI sau.

Bước đầu tiên là tạo người dùng trong QuickSight chỉ định vai trò IAM đã tạo trước đó và địa chỉ email đã đăng ký trong Azure AD. Bước thứ hai là tạo một nhóm có tên nhóm dưới dạng các giá trị thuộc tính kết hợp từ Azure AD cho người dùng đã tạo ở bước đầu tiên. Bước thứ ba là thêm người dùng vào nhóm đã tạo trước đó; member-name cho biết tên người dùng được tạo trong QuickSight bao gồm <IAM Role name>/<session name>. Xem mã sau đây:

aws quicksight register-user --aws-account-id <ACCOUNTID> --namespace default --identity-type IAM --email <email registered in Azure AD> --user-role READER --iam-arn arn:aws:iam::<ACCOUNTID>:role/qs-reader-azure --session-name <email registered in Azure AD> aws quicksight create-group --aws-account-id <ACCOUNTID> --namespace default --group-name Marketing-Specialist aws quicksight create-group-membership --aws-account-id <ACCOUNTID> --namespace default --member-name qs-reader-azure/<email registered in Azure AD> –-group-name Marketing-Specialist

Tại thời điểm này, cấu hình toàn diện của Azure AD, IAM Identity Center, IAM và QuickSight đã hoàn tất.

Xác minh cấu hình bằng cách đăng nhập vào QuickSight từ cổng Trung tâm nhận dạng IAM

Bây giờ, bạn đã sẵn sàng đăng nhập vào QuickSight bằng luồng SSO do IdP khởi tạo:

  1. Mở một cửa sổ riêng tư mới trong trình duyệt của bạn.
  2. Đăng nhập vào cổng Trung tâm nhận dạng IAM (https://d-xxxxxxxxxx.awsapps.com/start).

Bạn được chuyển hướng đến lời nhắc đăng nhập Azure AD.

  1. Nhập thông tin đăng nhập Azure AD của bạn.

Bạn được chuyển hướng trở lại cổng Trung tâm nhận dạng IAM.

  1. Trong cổng Trung tâm nhận dạng IAM, hãy chọn Amazon QuickSight.

Cổng Trung tâm nhận dạng IAM, chọn Amazon QuickSight

Bạn sẽ tự động được chuyển hướng đến trang chủ QuickSight của mình.
tự động chuyển hướng đến trang chủ QuickSight của bạn

Phần II: Tự động thay đổi thành viên nhóm khi có sự kiện SCIM

Trong phần này, chúng tôi định cấu hình quy trình cập nhật.

Hiểu sự kiện SCIM và mẫu sự kiện cho EventBridge

Khi quản trị viên Azure AD thực hiện bất kỳ thay đổi nào đối với các thuộc tính trên hồ sơ người dùng cụ thể, thay đổi đó sẽ được đồng bộ hóa với hồ sơ người dùng trong Trung tâm nhận dạng IAM thông qua giao thức SCIM và hoạt động này được ghi lại trong một Đường mòn đám mây AWS sự kiện được gọi UpdateUser by sso-directory.amazonaws.com (Trung tâm nhận dạng IAM) làm nguồn sự kiện. Tương tự như vậy, các CreateUser sự kiện được ghi lại khi người dùng được tạo trên Azure AD và DisableUser sự kiện dành cho khi người dùng bị vô hiệu hóa.

Ảnh chụp màn hình sau đây trên  Sự kiện lịch sử trang hiển thị hai CreateUser sự kiện: một sự kiện được ghi lại bởi Trung tâm nhận dạng IAM và sự kiện còn lại là bởi QuickSight. Trong bài đăng này, chúng tôi sử dụng bài đăng từ Trung tâm nhận dạng IAM.

Bảng điều khiển CloudTrail

Để EventBridge có thể xử lý luồng đúng cách, mỗi sự kiện phải chỉ định các trường của sự kiện mà bạn muốn mẫu sự kiện khớp với. Mẫu sự kiện sau đây là một ví dụ về UpdateUser sự kiện được tạo trong Trung tâm nhận dạng IAM khi đồng bộ hóa SCIM:

{ "source": ["aws.sso-directory"], "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventSource": ["sso-directory.amazonaws.com"], "eventName": ["UpdateUser"] }
}

Trong bài đăng này, chúng tôi trình bày cách cập nhật tự động tư cách thành viên nhóm trong QuickSight được kích hoạt bởi UpdateUser sự kiện SCIC.

Tạo ánh xạ thuộc tính cho tên nhóm

Để chức năng Lambda quản lý tư cách thành viên nhóm trong QuickSight, chức năng này phải có hai thuộc tính người dùng (departmentjobTitle). Để làm cho quy trình đơn giản hơn, chúng tôi đang kết hợp hai thuộc tính trong Azure AD (department, jobTitle) thành một thuộc tính trong Trung tâm nhận dạng IAM (title), sử dụng tính năng ánh xạ thuộc tính trong Azure AD. Trung tâm nhận dạng IAM sau đó sử dụng title thuộc tính làm tên nhóm được chỉ định cho người dùng này.

  1. Đăng nhập vào bảng điều khiển Azure AD, điều hướng đến Ứng dụng Doanh nghiệp, IIC-QuickSightCung cấp.
  2. Chọn Chỉnh sửa ánh xạ thuộc tính.
  3. Theo Ánh xạ, chọn Cung cấp người dùng Azure Active Directory.
    Bảng điều khiển Azure AD, Dưới ánh xạ
  4. Chọn jobTitle từ danh sách Thuộc tính Azure Active Directory.
  5. Thay đổi các cài đặt sau:
    1. Loại bản đồExpression
    2. Biểu hiệnJoin("-", [department], [jobTitle])
    3. thuộc tính mục tiêu title
      cập nhật cài đặt
  6. Chọn Lưu.
  7. Bạn có thể rời khỏi trang cung cấp.

Thuộc tính được cập nhật tự động trong Trung tâm nhận dạng IAM. Hồ sơ người dùng được cập nhật trông giống như các ảnh chụp màn hình sau (Azure AD ở bên trái, Trung tâm nhận dạng IAM ở bên phải).

cập nhật hồ sơ người dùng
Thông tin liên quan đến công việc

Tạo một hàm Lambda

Bây giờ, chúng ta tạo một hàm Lambda để cập nhật tư cách thành viên nhóm QuickSight khi có sự kiện SCIM. Phần cốt lõi của chức năng là lấy thông tin của người dùng title giá trị thuộc tính trong Trung tâm nhận dạng IAM dựa trên thông tin sự kiện được kích hoạt, sau đó để đảm bảo rằng người dùng tồn tại trong QuickSight. Nếu tên nhóm chưa tồn tại, nó sẽ tạo nhóm trong QuickSight rồi thêm người dùng vào nhóm. Hoàn thành các bước sau:

  1. Trên bảng điều khiển Lambda, chọn Tạo chức năng.
  2. Trong Họ tên, đi vào UpdateQuickSightUserUponSCIMEvent.
  3. Trong Runtime, chọn Python 3.9.
  4. Trong Time Out, đặt thành 15 giây.
  5. Trong Quyền, tạo và đính kèm vai trò IAM bao gồm các quyền sau (thực thể đáng tin cậy (chính) phải là lambda.amazonaws.com):
    { "Version": "2012-10-17", "Statement": [ { "Sid": "MinimalPrivForScimQsBlog", "Effect": "Allow", "Action": [ "identitystore:DescribeUser", "quicksight:RegisterUser", "quicksight:DescribeUser", "quicksight:CreateGroup", "quicksight:DeleteGroup", "quicksight:DescribeGroup", "quicksight:ListUserGroups", "quicksight:CreateGroupMembership", "quicksight:DeleteGroupMembership", "quicksight:DescribeGroupMembership", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" } ]
    }

  6. Viết mã Python bằng Boto3 SDK cho Cửa hàng nhận dạngQuickSight. Sau đây là toàn bộ mã Python mẫu:
import sys
import boto3
import json
import logging
from time import strftime
from datetime import datetime # Set logging
logger = logging.getLogger()
logger.setLevel(logging.INFO) def lambda_handler(event, context): ''' Modify QuickSight group membership upon SCIM event from IAM Identity Center originated from Azure AD. It works in this way: Azure AD -> SCIM -> Identity Center -> CloudTrail -> EventBridge -> Lambda -> QuickSight Note that this is a straightforward sample to show how to update QuickSight group membership upon certain SCIM event. For example, it assumes that 1:1 user-to-group assigmnent, only one (combined) SAML attribute, etc. For production, take customer requirements into account and develop your own code. ''' # Setting variables (hard-coded. get dynamically for production code) qs_namespace_name = 'default' qs_iam_role = 'qs-reader-azure' # Obtain account ID and region account_id = boto3.client('sts').get_caller_identity()['Account'] region = boto3.session.Session().region_name # Setup clients qs = boto3.client('quicksight') iic = boto3.client('identitystore') # Check boto3 version logger.debug(f"## Your boto3 version: {boto3.__version__}") # Get user info from event data event_json = json.dumps(event) logger.debug(f"## Event: {event_json}") iic_store_id = event['detail']['requestParameters']['identityStoreId'] iic_user_id = event['detail']['requestParameters']['userId'] # For UpdateUser event, userId is provided through requestParameters logger.info("## Getting user info from Identity Store.") try: res_iic_describe_user = iic.describe_user( IdentityStoreId = iic_store_id, UserId = iic_user_id ) except Exception as e: logger.error("## Operation failed due to unknown error. Exiting.") logger.error(e) sys.exit() else: logger.info(f"## User info retrieval succeeded.") azure_user_attribute_title = res_iic_describe_user['Title'] azure_user_attribute_userprincipalname = res_iic_describe_user['UserName'] qs_user_name = qs_iam_role + "/" + azure_user_attribute_userprincipalname logger.info(f"#### Identity Center user name: {azure_user_attribute_userprincipalname}") logger.info(f"#### QuickSight group name desired: {azure_user_attribute_title}") logger.debug(f"#### res_iic_describe_user: {json.dumps(res_iic_describe_user)}, which is {type(res_iic_describe_user)}") # Exit if user is not present since this function is supposed to be called by UpdateUser event try: # Get QuickSight user name res_qs_describe_user = qs.describe_user( UserName = qs_user_name, AwsAccountId = account_id, Namespace = qs_namespace_name ) except qs.exceptions.ResourceNotFoundException as e: logger.error(f"## User {qs_user_name} is not found in QuickSight.") logger.error(f"## Make sure the QuickSight user has been created in advance. Exiting.") logger.error(e) sys.exit() except Exception as e: logger.error("## Operation failed due to unknown error. Exiting.") logger.error(e) sys.exit() else: logger.info(f"## User {qs_user_name} is found in QuickSight.") # Remove current membership unless it's the desired one qs_new_group = azure_user_attribute_title # Set "Title" SAML attribute as the desired QuickSight group name in_desired_group = False # Set this flag True when the user is already a member of the desired group logger.info(f"## Starting group membership removal.") try: res_qs_list_user_groups = qs.list_user_groups( UserName = qs_user_name, AwsAccountId = account_id, Namespace = qs_namespace_name ) except Exception as e: logger.error("## Operation failed due to unknown error. Exiting.") logger.error(e) sys.exit() else: # Skip if the array is empty (user is not member of any groups) if not res_qs_list_user_groups['GroupList']: logger.info(f"## User {qs_user_name} is not a member of any QuickSight group. Skipping removal.") else: for grp in res_qs_list_user_groups['GroupList']: qs_current_group = grp['GroupName'] # Retain membership if the new and existing group names match if qs_current_group == qs_new_group: logger.info(f"## The user {qs_user_name} already belong to the desired group. Skipping removal.") in_desired_group = True else: # Remove all unnecessary memberships logger.info(f"## Removing user {qs_user_name} from existing group {qs_current_group}.") try: res_qs_delete_group_membership = qs.delete_group_membership( MemberName = qs_user_name, GroupName = qs_current_group, AwsAccountId = account_id, Namespace = qs_namespace_name ) except Exception as e: logger.error(f"## Operation failed due to unknown error. Exiting.") logger.error(e) sys.exit() else: logger.info(f"## The user {qs_user_name} has removed from {qs_current_group}.") # Create group membership based on IIC attribute "Title" logger.info(f"## Starting group membership assignment.") if in_desired_group is True: logger.info(f"## The user already belongs to the desired one. Skipping assignment.") else: try: logger.info(f"## Checking if the desired group exists.") res_qs_describe_group = qs.describe_group( GroupName = qs_new_group, AwsAccountId = account_id, Namespace = qs_namespace_name ) except qs.exceptions.ResourceNotFoundException as e: # Create a QuickSight group if not present logger.info(f"## Group {qs_new_group} is not present. Creating.") today = datetime.now() res_qs_create_group = qs.create_group( GroupName = qs_new_group, Description = 'Automatically created at ' + today.strftime('%Y.%m.%d %H:%M:%S'), AwsAccountId = account_id, Namespace = qs_namespace_name ) except Exception as e: logger.error(f"## Operation failed due to unknown error. Exiting.") logger.error(e) sys.exit() else: logger.info(f"## Group {qs_new_group} is found in QuickSight.") # Add the user to the desired group logger.info("## Modifying group membership based on its latest attributes.") logger.info(f"#### QuickSight user name: {qs_user_name}") logger.info(f"#### QuickSight group name: {qs_new_group}") try: res_qs_create_group_membership = qs.create_group_membership( MemberName = qs_user_name, GroupName = qs_new_group, AwsAccountId = account_id, Namespace = qs_namespace_name ) except Exception as e: logger.error("## Operation failed due to unknown error. Exiting.") logger.error(e) else: logger.info("## Group membership modification succeeded.") qs_group_member_name = res_qs_create_group_membership['GroupMember']['MemberName'] qs_group_member_arn = res_qs_create_group_membership['GroupMember']['Arn'] logger.debug("## QuickSight group info:") logger.debug(f"#### qs_user_name: {qs_user_name}") logger.debug(f"#### qs_group_name: {qs_new_group}") logger.debug(f"#### qs_group_member_name: {qs_group_member_name}") logger.debug(f"#### qs_group_member_arn: {qs_group_member_arn}") logger.debug("## IIC info:") logger.debug(f"#### IIC user name: {azure_user_attribute_userprincipalname}") logger.debug(f"#### IIC user id: {iic_user_id}") logger.debug(f"#### Title: {azure_user_attribute_title}") logger.info(f"## User {qs_user_name} has been successfully added to the group {qs_new_group} in {qs_namespace_name} namespace.") # return response return { "namespaceName": qs_namespace_name, "userName": qs_user_name, "groupName": qs_new_group }

Lưu ý rằng chức năng Lambda này yêu cầu Boto3 1.24.64 trở lên. Nếu Boto3 được bao gồm trong Thời gian chạy Lambda cũ hơn, hãy sử dụng lớp Lambda để sử dụng phiên bản Boto3 mới nhất. Để biết thêm chi tiết, hãy tham khảo Làm cách nào để giải quyết các lỗi "dịch vụ không xác định", "xác thực tham số không thành công" và "đối tượng không có thuộc tính" từ hàm Lambda Python (Boto 3).

Thêm quy tắc EventBridge để kích hoạt sự kiện

Để tạo quy tắc EventBridge nhằm gọi hàm Lambda đã tạo trước đó, hãy hoàn thành các bước sau:

  1. Trên bảng điều khiển EventBridge, hãy tạo một quy tắc mới.
  2. Trong Họ tên, đi vào updateQuickSightUponSCIMEvent.
  3. Trong mẫu sự kiện, nhập mã sau:
    { "source": ["aws.sso-directory"], "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventSource": ["sso-directory.amazonaws.com"], "eventName": ["UpdateUser"] }
    }

  4. Trong Mục tiêu, hãy chọn hàm Lambda mà bạn đã tạo (UpdateQuickSightUserUponSCIMEvent).
  5. Kích hoạt quy tắc.

Xác minh cấu hình bằng cách thay đổi giá trị thuộc tính người dùng tại Azure AD

Hãy sửa đổi thuộc tính của người dùng tại Azure AD, sau đó kiểm tra xem nhóm mới đã được tạo chưa và người dùng đã được thêm vào nhóm mới chưa.

  1. Quay lại bảng điều khiển Azure AD.
  2. Từ Quản lý, Click Người dùng.
  3. Chọn một trong những người dùng mà trước đây bạn đã sử dụng để đăng nhập vào QuickSight từ cổng Trung tâm nhận dạng IAM.
  4. Chọn Chỉnh sửa thuộc tính, sau đó chỉnh sửa các giá trị cho Chức vụbộ.
    Chỉnh sửa thuộc tính
  5. Lưu cấu hình.
  6. Từ Quản lý, chọn Ứng dụng doanh nghiệp, tên ứng dụng của bạn và Cung cấp.
  7. Chọn Dừng cung cấp và sau đó Bắt đầu cung cấp theo thứ tự.

Trong Azure AD, khoảng thời gian cung cấp SCIM là cố định đến 40 phút. Để có được kết quả ngay lập tức, chúng tôi dừng và bắt đầu cung cấp theo cách thủ công.

trạng thái cung cấp

  1. Điều hướng đến bảng điều khiển QuickSight.
  2. Trên menu tên người dùng thả xuống, chọn Quản lý QuickSight.
  3. Chọn Quản lý nhóm.

Bây giờ bạn sẽ thấy rằng nhóm mới đã được tạo và người dùng được gán cho nhóm này.

nhóm mới được tạo và người dùng được gán cho nhóm này

Làm sạch

Khi bạn hoàn thành giải pháp, hãy dọn sạch môi trường của bạn để giảm thiểu tác động đến chi phí. Bạn có thể muốn xóa các tài nguyên sau:

  • Hàm Lambda
  • lớp lambda
  • Vai trò IAM cho hàm Lambda
  • Nhóm nhật ký CloudWatch cho chức năng Lambda
  • Quy tắc EventBridge
  • tài khoản QuickSight
    • Chú thích : Chỉ có thể có một tài khoản QuickSight cho mỗi tài khoản AWS. Vì vậy, tài khoản QuickSight của bạn có thể đã được người dùng khác trong tổ chức của bạn sử dụng. Chỉ xóa tài khoản QuickSight nếu bạn thiết lập rõ ràng để theo dõi blog này và hoàn toàn chắc chắn rằng tài khoản đó không được sử dụng bởi bất kỳ người dùng nào khác.
  • Phiên bản Trung tâm nhận dạng IAM
  • Cấu hình nhà cung cấp IAM ID cho Azure AD
  • Phiên bản Azure AD

Tổng kết

Bài đăng này cung cấp hướng dẫn từng bước để định cấu hình việc cung cấp SCIM của Trung tâm nhận dạng IAM và liên kết SAML 2.0 từ Azure AD để quản lý tập trung người dùng QuickSight. Chúng tôi cũng đã trình diễn các cập nhật thành viên nhóm tự động trong QuickSight dựa trên thuộc tính người dùng trong Azure AD, bằng cách sử dụng các sự kiện SCIM được tạo trong Trung tâm nhận dạng IAM và thiết lập tự động hóa với EventBridge và Lambda.

Với cách tiếp cận theo hướng sự kiện này để cung cấp cho người dùng và nhóm trong QuickSight, quản trị viên hệ thống có thể hoàn toàn linh hoạt khi có thể dự kiến ​​các cách quản lý người dùng khác nhau tùy thuộc vào tổ chức. Nó cũng đảm bảo tính nhất quán của người dùng và nhóm giữa QuickSight và Azure AD bất cứ khi nào người dùng truy cập QuickSight.

Chúng tôi rất mong nhận được bất kỳ câu hỏi hoặc phản hồi nào.


Giới thiệu về tác giả

Takeshi Nakatani là Chuyên gia tư vấn Bigdata chính trong nhóm Dịch vụ chuyên nghiệp ở Tokyo. Ông có 25 năm kinh nghiệm trong ngành CNTT, chuyên môn về kiến ​​trúc hạ tầng dữ liệu. Vào những ngày nghỉ, anh ấy có thể trở thành một tay trống rock hoặc một tay đua mô tô.

Wakana Vilquin-Sakashita là Kiến trúc sư giải pháp chuyên gia cho Amazon QuickSight. Cô ấy làm việc chặt chẽ với khách hàng để giúp hiểu rõ dữ liệu thông qua trực quan hóa. Trước đây Wakana làm việc cho S&P Global để hỗ trợ khách hàng truy cập dữ liệu, thông tin chi tiết và nghiên cứu liên quan đến hoạt động kinh doanh của họ.

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?