1. Mở đầu

AWS SSO là dịch vụ giúp các user đăng nhập chỉ một lần để sử dụng nhiều dịch vụ khác nhau như AWS, Jenkins,...

Với việc chỉ đăng nhập một lần duy nhất, user cũng như người quản lý sẽ không phải quản lý nhiều user và mật khẩu khác nhau, giảm đi gánh nặng cho việc quản lý trong doanh nghiệp.

Thay vì sử dụng IAM User chỉ quản lý được các user trong AWS, bạn nên sử dụng AWS SSO để có thể quản lý được mọi dịch vụ khác nữa bên ngoài AWS.

Ví dụ công ty bạn có sử dụng CI-CD là jenkins, có sử dụng Slack, sử dụng Gmail thì bạn chỉ cần tạo một tài khoản duy nhất trên AWS SSO cho user là đủ.

AWS SSO hoàn toàn miễn phí như AWS Organization.

 

2. Cách cấu hình AWS SSO

  • Vào AWS SSO và bật tính năng AWS SSO lên, khi sử dụng AWS SSO, yêu cầu bạn cũng phải bật tính năng sử dụng AWS Organization:

(Bạn xem thêm về AWS Organization tại https://blog.daovanhung.com/post/khi-nao-thi-su-dung-aws-organization)

Bật AWS SSO

  • Sau khi vào màn hình AWS SSO, bạn chọn tab Setting để xem cấu hình, mặc định Idp của bạn sẽ là AWS SSO, bạn có thể chọn sử dụng Active Directory (AD) hoặc Idp SAML của bên thứ 3 nếu muốn:

Identity Source in AWS SSO

 

Chọn identity source trong aws sso

(Bạn xem thêm về cách hoạt động của SAML và SSO tại https://blog.daovanhung.com/post/giai-thich-cach-hoat-dong-cua-saml)

 

  • AWS SSO sẽ có các tab như sau:

Các tab trong aws sso

Trong đó: 

  • Tab AWS Accounts là root account trong AWS Organization, chú ý là AWS organization có thể có nhiều root account, hình dưới đây liệ t kê tất cả các root account trong AWS Organization của mình khi chọn tab AWS Accounts:

          AWS Accounts trong AWS SSO

  • Tab Applications là nơi chứa các dịch vụ của bạn như là Jenkins, Slack, Chatwork,...

         Applications trong aws sso

 

  • Tab Users là nơi chứa các user sử dụng AWS, JenkinsSlack,... của bạn. Nếu chỉ sử dụng mỗi AWS thôi thì tab này cũng giống như nơi chứa IAM User vậy.
  • Tab Groups là nơi chứa các groups để nhóm các user với nhau, nếu chỉ sử dụng mỗi AWS thôi thì tab này cũng giống như nơi chứa IAM Group vậy.

 

Ví dụ mình muốn tạo một tài khoản cho Alice để có thể sử dụng Chatwork và Jenkins mà không cho sử dụng Jenkins:

  • Vào tab Users tạo một tài khoản cho Alice

Tạo user trong aws sso

 

  • Ấn Next: Groups để chọn Group cho user Alice, nếu chưa có group nào thì tạo group mới tại đây, ví dụ mình tạo group QA:

Tạo group trong aws sso

 

  • Nhấn Add user để tới màn hình thành công, ở màn hình này bạn copy lại những nội dung đó để đưa cho Alice sử dụng:

Add user trong aws sso

 

  • Alice sẽ vào User portal URL và đăng nhập với Username và One-time password được cung cấp, lần đầu đăng nhập Alice sẽ phải đổi mật khẩu. Dù đăng nhập thành công nhưng Alice vẫn chưa thể sử dụng Slack và Chatwork được vì ta chưa add Alice vào bất kỳ AWS Account nào.
  • Vào tab AWS Accounts và chọn AWS account mà Alice sẽ thuộc về:

Thêm user vào aws account trong aws sso

 

  • Nhấn Assign users sau đó chọn user hoặc group, mình sẽ chọn group QA mà Alice đang nằm trong đó:

chọn group trong aws sso

  • Nhấn Next: permission set để thiết lập quyền cho group QA này, nếu chưa có permission thì ấn vào Create new permission để tạo mới. Mình sẽ tạo permission tên là QA-permissions và chỉ cho phép group QA này quyền S3ReadOnly:

tạo permission trong aws sso

Session duration là thời gian session của Alice, sau khoảng thời gian đó, Alice sẽ bị logout ra và phải login lại.

  • Nếu tạo permission mới như trên, bạn sẽ phải vào lại tab AWS Accounts để Assign User lại.
  • Sau khi Assign User thành công, Alice có thể vào và sử dụng AWS với quyền S3ReadOnly:

cách sử dụng aws sso

 

  • Để Alice có thể sử dụng Chatwork và Slack, bên Chatwork và Slack bạn phải cấu hình cho chúng có thể sử dụng AWS SSO. Bài viết này chỉ trong khuôn khổ cấu hình AWS SSO nên cách cấu hình từng application để sử dụng AWS SSO thì bạn tìm hiểu thêm trên google.

 

Khi Alice muốn sử dụng AWS sẽ có 2 lựa chọn là Management console và Command line or programmatic access như hình trên.

Management console sẽ đưa Alice tới AWS console trên giao diện và sử dụng như bình thường. Còn khi chọn Command line or programmatic access, hướng dẫn sẽ đưa ra cho Alice cách thêm session key vào local máy để sử dụng:

programmatic access với aws sso

 

Cứ sau 12 tiếng đồng hồ, là Alice sẽ phải lấy lại các token trên để có thể sử dụng CLI trên local máy.

Alice cũng có thể sử dụng AWS SSO CLI để tích hợp các token đó một cách dễ dàng mà không cần phải vào lấy các token trên, cách làm này thì bạn tham khảo ở https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html

 

Link tham khảo:

https://aws.amazon.com/single-sign-on/