Amazon Cognito
Amazon Cognito là một dịch vụ giúp cung cấp cho người dùng một danh tính để tương tác với các ứng dụng web hoặc di động. Cognito User Pools cung cấp chức năng đăng nhập cho người dùng ứng dụng và tích hợp được với API Gateway & Application Load Balancer. Trong khi đó, Cognito Identity Pools (Federated Identity) cung cấp thông tin đăng nhập cho người dùng để truy cập trực tiếp vào các tài nguyên AWS. Cognito Identity Pools cũng tích hợp được với Cognito User Pools như một nhà cung cấp danh tính. So sánh với IAM, Cognito phù hợp với các trường hợp có “hàng trăm người dùng”, “người dùng di động” và “xác thực với SAML”.
Cognito User Pools (CUP) – User Features
Cognito User Pools (CUP) là một dịch vụ của AWS, được sử dụng để tạo một cơ sở dữ liệu các người dùng cho ứng dụng web và di động. CUP cung cấp nhiều tính năng cho người dùng, bao gồm:
- Tạo tài khoản đăng nhập bằng cách sử dụng một cặp tên người dùng (hoặc địa chỉ email) và mật khẩu đơn giản.
- Cung cấp tính năng đặt lại mật khẩu khi người dùng quên mật khẩu của mình.
- Xác minh email và số điện thoại của người dùng.
- Cung cấp tính năng xác thực đa yếu tố (MFA).
- Cho phép người dùng đăng nhập với các danh tính từ Facebook, Google, SAML và nhiều nguồn khác.
Cognito User Pools (CUP) – Integrations
Điều này có nghĩa là CUP cung cấp một số tính năng để cho phép người dùng đăng nhập vào ứng dụng web hoặc mobile của bạn thông qua API Gateway và Application Load Balancer. Với tích hợp này, bạn có thể quản lý quyền truy cập của người dùng vào các tài nguyên của ứng dụng và chứng thực người dùng để thực hiện các hoạt động xác thực của họ.
Cognito Identity Pools (Federated Identities)
• Tạo ra nhận dạng (identity) cho “người dùng” để họ có thể lấy được các thông tin chứng chỉ AWS tạm thời.
• Nguồn người dùng có thể là Cognito User Pools, đăng nhập bên thứ 3, vv…
• Người dùng có thể truy cập trực tiếp vào các dịch vụ AWS hoặc thông qua API Gateway.
• Các chính sách IAM được áp dụng cho các thông tin chứng chỉ được xác định trong Cognito.
• Chúng có thể được tùy chỉnh dựa trên user_id để kiểm soát chi tiết.
• Có các vai trò IAM mặc định cho người dùng được xác thực và khách.
Cognito Identity Pools – Diagram
Cognito Identity Pools là một dịch vụ của AWS cho phép người dùng của ứng dụng web hoặc di động được cấp quyền truy cập vào các tài nguyên AWS thông qua việc cung cấp các thông tin đăng nhập (như Facebook, Google, SAML, hoặc Cognito User Pools). Trong đó, Cognito Identity Pools có các tính năng như sau:
- Lấy thông tin đăng nhập từ nhiều nguồn khác nhau và phân quyền truy cập tài nguyên AWS cho người dùng.
- Người dùng có thể truy cập trực tiếp vào các dịch vụ AWS hoặc thông qua API Gateway.
- Cognito Identity Pools có thể xác định các chính sách IAM được áp dụng cho các thông tin đăng nhập của người dùng, và có thể tùy chỉnh các chính sách này dựa trên user_id để kiểm soát quyền truy cập tài nguyên của từng người dùng.
- Cognito Identity Pools cung cấp các vai trò IAM mặc định cho người dùng đã xác thực và khách truy cập.
Trong sơ đồ, người dùng đăng nhập thông qua Cognito Identity Pools để nhận được thông tin xác thực. Sau đó, thông tin này được sử dụng để lấy các chứng chỉ tạm thời để truy cập tài nguyên AWS mà người dùng được phép truy cập. Tùy thuộc vào các chính sách IAM được áp dụng, người dùng có thể được phép hoặc bị từ chối truy cập vào các tài nguyên khác nhau của AWS.
Cognito Identity Pools Row Level Security in DynamoDB
Cognito Identity Pools cung cấp tính năng Row-Level Security cho DynamoDB, cho phép người dùng chỉ truy cập và thực hiện các thao tác trên các hàng trong bảng DynamoDB dựa trên thông tin định danh của người dùng. Khi một người dùng yêu cầu truy cập vào DynamoDB thông qua Cognito Identity Pool, các quyền truy cập của họ được xác định bởi IAM roles được liên kết với Cognito Identity Pool và chính sách IAM được định nghĩa cho các roles đó. Các chính sách IAM có thể được tùy chỉnh dựa trên ID của người dùng và điều kiện, cho phép họ chỉ truy cập và thực hiện các thao tác trên các hàng được chỉ định trong bảng DynamoDB. Tính năng này giúp cải thiện bảo mật và kiểm soát quyền truy cập đến các dữ liệu trong DynamoDB.