Dự báo Amazon là một dịch vụ được quản lý hoàn toàn dựa trên cùng một công nghệ được sử dụng để dự báo tại Amazon.com. Dự báo sử dụng công nghệ máy học (ML) để kết hợp dữ liệu chuỗi thời gian với các biến bổ sung nhằm xây dựng dự báo có độ chính xác cao. Dự báo không yêu cầu kinh nghiệm ML để bắt đầu. Bạn chỉ cần cung cấp dữ liệu lịch sử và bất kỳ dữ liệu bổ sung nào có thể ảnh hưởng đến dự báo.
Khách hàng đang chuyển sang sử dụng mô hình Phần mềm dưới dạng dịch vụ (SaaS) để cung cấp các giải pháp cho nhiều đối tượng thuê. Bạn có thể xây dựng các ứng dụng SaaS với nhiều mô hình kiến trúc khác nhau để đáp ứng các yêu cầu tuân thủ và quy định. Tùy thuộc vào mô hình SaaS, các tài nguyên như Dự báo được chia sẻ giữa các đối tượng thuê. Quyền truy cập, giám sát và thanh toán dữ liệu dự báo cần được xem xét cho mỗi bên thuê để triển khai các giải pháp SaaS.
Bài đăng này phác thảo cách sử dụng Dự báo trong ứng dụng SaaS nhiều bên thuê bằng cách sử dụng Kiểm soát truy cập dựa trên thuộc tính (ABAC) trong Quản lý truy cập và nhận dạng AWS (IAM) để cung cấp các khả năng này. ABAC là một phương pháp mạnh mẽ mà bạn có thể sử dụng để cô lập tài nguyên giữa các đối tượng thuê.
Trong bài đăng này, chúng tôi cung cấp hướng dẫn về cách thiết lập chính sách IAM cho đối tượng thuê bằng cách sử dụng nguyên tắc ABAC và Dự báo. Để chứng minh cấu hình, chúng tôi thiết lập hai đối tượng thuê, TenantA
và TenantB
và hiển thị trường hợp sử dụng trong ngữ cảnh của ứng dụng SaaS bằng Dự báo. Trong trường hợp sử dụng của chúng tôi, TenantB
không thể xóa TenantA
tài nguyên và ngược lại. Sơ đồ sau đây minh họa kiến trúc của chúng tôi.
TenantA
và TenantB
có các dịch vụ chạy dưới dạng microservice trong Dịch vụ Kubernetes đàn hồi của Amazon (Amazon EKS). Ứng dụng đối tượng thuê sử dụng Dự báo như một phần của quy trình kinh doanh.
Nhập dữ liệu dự báo
Dự báo nhập dữ liệu từ đối tượng thuê Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3) vào bộ chứa S3 được quản lý Dự báo. Dữ liệu có thể được mã hóa tự động khi chuyển tiếp và ở trạng thái nghỉ bằng cách sử dụng khóa được quản lý Dự báo hoặc khóa dành riêng cho đối tượng thuê thông qua Dịch vụ quản lý khóa AWS (AWS KMS). Khóa dành riêng cho đối tượng thuê có thể được tạo bởi ứng dụng SaaS như một phần của quá trình giới thiệu hoặc đối tượng thuê có thể cung cấp khóa do khách hàng quản lý (CMK) của riêng họ bằng cách sử dụng AWS KMS. Việc thu hồi quyền đối với khóa dành riêng cho đối tượng thuê sẽ ngăn Dự báo sử dụng dữ liệu của đối tượng thuê. Chúng tôi khuyên bạn nên sử dụng khóa dành riêng cho đối tượng thuê và vai trò IAM cho mỗi đối tượng thuê trong môi trường SaaS nhiều đối tượng thuê. Điều này cho phép bảo mật dữ liệu trên cơ sở từng người thuê.
Tổng quan về giải pháp
Bạn có thể phân vùng dữ liệu trên Amazon S3 để tách quyền truy cập của đối tượng thuê theo nhiều cách khác nhau. Đối với bài đăng này, chúng tôi thảo luận về hai chiến lược:
- Sử dụng một bộ chứa S3 cho mỗi đối tượng thuê
- Sử dụng một bộ chứa S3 duy nhất và tách dữ liệu đối tượng thuê bằng tiền tố
Để biết thêm thông tin về các chiến lược khác nhau, hãy xem Lưu trữ dữ liệu nhiều bên thuê trên Amazon S3 Kho lưu trữ GitHub.
Khi sử dụng một nhóm cho mỗi đối tượng thuê, bạn sử dụng chính sách IAM để hạn chế quyền truy cập vào một nhóm S3 của đối tượng thuê nhất định. Ví dụ:
Có giới hạn cố định về số lượng bộ chứa S3 trên mỗi tài khoản. Một chiến lược nhiều tài khoản cần được xem xét để vượt qua giới hạn này.
Trong tùy chọn thứ hai của chúng tôi, dữ liệu đối tượng thuê được phân tách bằng cách sử dụng tiền tố S3 trong một nhóm S3 duy nhất. Chúng tôi sử dụng chính sách IAM để hạn chế quyền truy cập trong tiền tố nhóm cho mỗi đối tượng thuê. Ví dụ:
Đối với bài đăng này, chúng tôi sử dụng tùy chọn thứ hai để gán tiền tố S3 trong một nhóm. Chúng tôi mã hóa dữ liệu đối tượng thuê bằng CMK trong AWS KMS.
Giới thiệu người thuê
Các ứng dụng SaaS dựa vào mô hình không ma sát để giới thiệu đối tượng thuê mới vào môi trường của họ. Điều này thường yêu cầu phối hợp một số thành phần để cung cấp và định cấu hình thành công tất cả các thành phần cần thiết để tạo đối tượng thuê mới. Quá trình này, trong kiến trúc SaaS, được gọi là giới thiệu người thuê nhà. Điều này có thể được bắt đầu trực tiếp bởi người thuê hoặc là một phần của quy trình do nhà cung cấp quản lý. Sơ đồ sau đây minh họa quy trình định cấu hình Dự báo cho mỗi đối tượng thuê như một phần của quy trình giới thiệu.
Tài nguyên được gắn thẻ với thông tin người thuê. Đối với bài đăng này, chúng tôi gắn thẻ các tài nguyên có giá trị cho đối tượng thuê, ví dụ: tenant_a
.
Tạo vai trò Dự báo
Vai trò IAM này do Dự báo trên mỗi đối tượng thuê đảm nhận. Bạn nên áp dụng chính sách sau để cho phép Dự báo tương tác với Amazon S3 và AWS KMS trong tài khoản khách hàng. Vai trò được gắn thẻ với người thuê thẻ. Ví dụ: xem đoạn mã sau:
Tạo các chính sách
Trong bước tiếp theo này, chúng tôi tạo chính sách cho vai trò Dự báo của mình. Đối với bài đăng này, chúng tôi chia chúng thành hai chính sách để dễ đọc hơn, nhưng bạn có thể tạo chúng theo nhu cầu của mình.
Chính sách 1: Dự báo quyền truy cập chỉ đọc
Chính sách sau đây cấp đặc quyền để mô tả, liệt kê và truy vấn tài nguyên Dự báo. Chính sách này hạn chế Dự báo ở quyền truy cập chỉ đọc. Điều kiện xác thực thẻ đối tượng thuê trong mã sau đây đảm bảo rằng giá trị thẻ đối tượng thuê khớp với thẻ đối tượng thuê của hiệu trưởng. Tham khảo đến mã in đậm để biết chi tiết
Chính sách 2: Chính sách truy cập Amazon S3 và AWS KMS
Chính sách sau cấp đặc quyền cho AWS KMS và quyền truy cập vào tiền tố đối tượng thuê S3. Điều kiện xác thực thẻ đối tượng thuê trong mã sau đây đảm bảo rằng giá trị thẻ đối tượng thuê khớp với thẻ đối tượng thuê của hiệu trưởng. Tham khảo đến mã in đậm để biết chi tiết
Tạo khóa dành riêng cho đối tượng thuê
Bây giờ, chúng tôi tạo một khóa dành riêng cho đối tượng thuê trong AWS KMS cho mỗi đối tượng thuê và gắn thẻ đó với giá trị thẻ đối tượng thuê. Ngoài ra, đối tượng thuê có thể mang chìa khóa của riêng họ tới AWS KMS. Chúng tôi đưa ra các vai trò trước (Forecast_TenantA_Role
or Forecast_TenantB_Role
) quyền truy cập vào khóa dành riêng cho đối tượng thuê.
Ví dụ: ảnh chụp màn hình sau hiển thị cặp khóa-giá trị của tenant
và tenant_a
.
Ảnh chụp màn hình sau đây hiển thị các vai trò IAM có thể sử dụng khóa này.
Tạo vai trò ứng dụng
Vai trò thứ hai mà chúng tôi tạo được đảm nhận bởi ứng dụng SaaS trên mỗi đối tượng thuê. Bạn nên áp dụng chính sách sau để cho phép ứng dụng tương tác với Forecast, Amazon S3 và AWS KMS. Vai trò được gắn thẻ với người thuê thẻ. Xem đoạn mã sau:
Tạo các chính sách
Bây giờ chúng ta tạo các chính sách cho vai trò ứng dụng. Đối với bài đăng này, chúng tôi chia chúng thành hai chính sách để dễ đọc hơn, nhưng bạn có thể tạo chúng theo nhu cầu của mình.
Chính sách 1: Quyền truy cập dự báo
Chính sách sau đây cấp đặc quyền để tạo, cập nhật và xóa tài nguyên Dự báo. Chính sách thực thi yêu cầu thẻ trong quá trình tạo. Ngoài ra, nó hạn chế việc list
, describe
và delete
các hành động đối với tài nguyên cho đối tượng thuê tương ứng. Chính sách này có IAM PassRole
để cho phép Dự báo đảm nhận vai trò này.
Sản phẩm tenant
điều kiện xác thực thẻ trong mã sau đây đảm bảo rằng giá trị thẻ đối tượng thuê khớp với đối tượng thuê. Tham khảo đến mã in đậm để biết chi tiết
Chính sách 2: Amazon S3, AWS KMS, Amazon CloudWatch và quyền truy cập vào nhóm tài nguyên
Chính sách sau cấp đặc quyền truy cập tài nguyên Amazon S3 và AWS KMS, đồng thời amazoncloudwatch. Nó giới hạn quyền truy cập vào tiền tố S3 dành riêng cho đối tượng thuê và CMK dành riêng cho đối tượng thuê. Điều kiện xác thực đối tượng thuê nằm trong mã in đậm.
Tạo một nhóm tài nguyên
Nhóm tài nguyên cho phép người thuê truy vấn tất cả các tài nguyên được gắn thẻ. Đoạn mã ví dụ sau sử dụng Giao diện dòng lệnh AWS (AWS CLI) để tạo nhóm tài nguyên cho TenantA
:
Luồng ứng dụng dự báo
Sơ đồ sau đây minh họa luồng ứng dụng Dự báo của chúng tôi. Dịch vụ ứng dụng đảm nhận vai trò IAM cho đối tượng thuê và gọi API Dự báo như một phần trong quy trình kinh doanh của nó.
Tạo một công cụ dự đoán cho TenantB
Các tài nguyên được tạo phải được gắn thẻ đối tượng thuê. Đoạn mã sau sử dụng API Python (Boto3) để tạo bộ dự đoán cho TenantB (tham khảo phần mã in đậm cụ thể):
Tạo dự báo trên công cụ dự đoán cho TenantB
Đoạn mã sau sử dụng API Python (Boto3) để tạo dự báo về công cụ dự đoán mà bạn vừa tạo:
Xác thực quyền truy cập vào tài nguyên Dự báo
Trong phần này, chúng tôi xác nhận rằng chỉ đối tượng thuê tương ứng mới có thể truy cập tài nguyên Dự báo. Việc truy cập, sửa đổi hoặc xóa tài nguyên Dự báo thuộc về một đối tượng thuê khác sẽ gây ra lỗi. Đoạn mã sau sử dụng API Python (Boto3) để chứng minh TenantA đang cố xóa tài nguyên Dự báo của TenantB:
Liệt kê và giám sát các yếu tố dự đoán
Mã ví dụ sau sử dụng API Python (Boto3) để truy vấn các yếu tố dự đoán Dự báo cho TenantA bằng cách sử dụng các nhóm tài nguyên:
như Khung được kiến trúc tốt của AWS giải thích, điều quan trọng là phải theo dõi hạn ngạch dịch vụ (còn được gọi là giới hạn dịch vụ). Dự báo có giới hạn cho mỗi tài khoản; để biết thêm thông tin, xem Nguyên tắc và Hạn ngạch.
Đoạn mã sau đây là một ví dụ về việc điền số liệu CloudWatch với tổng số yếu tố dự đoán:
Những ý kiến khác
Giới hạn tài nguyên và điều tiết cần phải được quản lý bởi ứng dụng trên các đối tượng thuê. Nếu bạn không thể chứa Giới hạn dự báo, bạn nên xem xét cấu hình nhiều tài khoản.
API Danh sách dự báo hoặc phản hồi của nhóm tài nguyên cần được lọc theo ứng dụng dựa trên tenant
giá trị thẻ.
Kết luận
Trong bài đăng này, chúng tôi đã trình bày cách cô lập quyền truy cập Dự báo bằng kỹ thuật ABAC trong ứng dụng SaaS nhiều bên thuê. Chúng tôi đã chỉ ra cách hạn chế quyền truy cập vào Dự báo của đối tượng thuê bằng cách sử dụng thẻ đối tượng thuê. Bạn có thể tùy chỉnh thêm các chính sách bằng cách áp dụng nhiều thẻ hơn hoặc áp dụng chiến lược này cho các dịch vụ AWS khác.
Để biết thêm thông tin về việc sử dụng ABAC làm chiến lược ủy quyền, hãy xem ABAC cho AWS là gì?
Về các tác giả
Gunjan Garg là Kỹ sư phát triển phần mềm Sr. trong nhóm AWS Vertical AI. Trong vai trò hiện tại của mình tại Amazon Forecast, cô ấy tập trung vào các vấn đề kỹ thuật và thích xây dựng các hệ thống có thể mở rộng cung cấp nhiều giá trị nhất cho người dùng cuối. Khi rảnh rỗi, cô thích chơi Sudoku và Minesweeper.
Matias Battaglia là Người quản lý tài khoản kỹ thuật tại Amazon Web Services. Với vai trò hiện tại của mình, anh ấy thích giúp đỡ khách hàng ở tất cả các giai đoạn trong hành trình đám mây của họ. Khi rảnh rỗi, anh ấy thích xây dựng các dự án AI/ML.
Rakesh Ramadas là một Kiến trúc sư Giải pháp ISV tại Amazon Web Services. Các lĩnh vực trọng tâm của anh ấy bao gồm AI / ML và Dữ liệu lớn.
- truy cập
- Tài khoản
- Hoạt động
- thêm vào
- AI
- đàn bà gan dạ
- Dự báo Amazon
- Amazon Web Services
- api
- API
- Các Ứng Dụng
- các ứng dụng
- kiến trúc
- ủy quyền
- AWS
- thanh toán
- xây dựng
- Xây dựng
- kinh doanh
- đám mây
- mã
- tuân thủ
- Current
- khách hàng
- dữ liệu
- truy cập dữ liệu
- Giải mã
- giao hàng
- Phát triển
- ky sư
- Kỹ Sư
- Môi trường
- dòng chảy
- Tập trung
- Miễn phí
- GitHub
- Nhóm
- Độ đáng tin của
- Hướng dẫn
- HTTPS
- IAM
- Bản sắc
- Va chạm
- thông tin
- IT
- Key
- phím
- Kubernetes
- học tập
- Dòng
- Danh sách
- học máy
- quản lý
- ML
- kiểu mẫu
- giám sát
- Tiếp nhận nhận việc
- Tùy chọn
- Nền tảng khác
- Chính sách
- điều luật
- dự án
- Python
- Yêu cầu
- tài nguyên
- Thông tin
- phản ứng
- REST của
- chạy
- SaaS
- Loạt Sách
- DỊCH VỤ
- định
- thiết lập
- chia sẻ
- Đơn giản
- Phần mềm
- phát triển phần mềm
- Giải pháp
- chia
- bắt đầu
- Tuyên bố
- là gắn
- Chiến lược
- hệ thống
- Kỹ thuật
- Công nghệ
- thời gian
- quá cảnh
- Cập nhật
- Người sử dụng
- giá trị
- web
- các dịch vụ web
- ở trong