Switch role với AWS CLI

Khi muốn switch role, trên AWS Management Console chúng ta chỉ cần vài cú click. Tuy nhiên với AWS Command Line Interface (CLI) thì chúng ta cần một vài bước thiết lập.
2020.12.23

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Khi muốn switch role, trên AWS Management Console chúng ta chỉ cần vài cú click. Tuy nhiên với AWS Command Line Interface (CLI) thì chúng ta cần một vài bước thiết lập.

I. Role và switch role

Trong AWS, chúng ta sẽ không làm việc trên tài khoản gốc mà từ User root chúng sẽ tạo ra các User con. Sau đó, ứng với các tác vụ và quyền hạn cần thiết mà chúng ta tạo ra các Role. Chúng ta sẽ làm việc trên các Role để đảm bảo bảo mật.

Role là một tập hợp các quyền mà bạn có thể sử dụng để truy cập các tài nguyên AWS mà bạn cần.

Role cũng tương tự như 1 user ở khía cạnh phân quyền, tuy nhiên trong khi user là định danh vĩnh viễn thì role có thể coi là định danh tạm thời.1 user sẽ chứa nhiều role. Việc của chúng ta là đăng nhập vào user và switch sang role mình cần làm việc.

Switch role đơn giản là việc thay đổi tập hợp quyền hạn này sang tập hợp quyền hạn khác.

Thường thì trong tổ chức, công ty, bạn sẽ được admin cấp cho 1 link switching role. Việc của bạn chỉ là click vào link đó và đặt tên cho role của mình. Sau đó mỗi lần muốn sử dụng role đó thì chỉ cần switch role trên AWS Management Console. Tuy nhiên sẽ có một số công việc yêu cầu sử dụng AWS Command Line Interface (CLI). Ở phần tiếp theo chúng ta sẽ cùng từng bước thiết lập AWS Command Line Interface (CLI).

II. AWS Command Line Interface (CLI)

AWS Command Line Interface (CLI) là một công cụ mã nguồn mở cho phép bạn tương tác với các dịch vụ AWS bằng cách sử dụng các câu lệnh.

  1. Nếu bạn chưa cài đặt CLI, bạn cần cài đặt CLI tuỳ vào hệ điều hành đang sử dụng theo hướng dẫn trong đường link dưới đây: https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-mac.html
  2. Tiếp theo, trong terminal chúng ta cần thiết lập CLI với câu lệnh:

$aws configure

Màn hình sẽ hiển thị lần lượt các thông tin định danh về tài khoản AWS để bạn nhập vào:

AWS Access Key ID [None]: ABCDEFGHIK
AWS Secret Access Key [None]: abcdefghik/ABCDE/fghik
Default region name [None]: ap-northeast-1 
Default output format [None]: json
  • AWS Access Key ID và AWS Secret Access Key là thông tin access key của tài khoản AWS của bạn.
  • Default region name là vùng region mặc định bạn muốn khi sử dụng CLI. (Trong ví dụ là ap-northeast-1: Tokyo)
  • Default output format là dạng dữ liệu mặc định của dữ liệu trả về từ các câu lệnh CLI. (Trong Ví dụ là dạng json)

*Trường hợp bạn vẫn chưa tạo access key:

  • Đăng nhập vào AWS Management Console bằng root user hoặc IAM user
  • Ở thanh điều hướng phía trên bên phải, chọn mục "My Security Credentials"
  • Ở mục "Access keys" chọn "Create New Access Key". Nếu bạn đã tạo access key, mục này sẽ bị ẩn
  • Khi access key được tạo, ấn "Show Access Key" để xem access key và "Download Key File" để tải về (Chỉ được tải về 1 lần duy nhất)
  • Ấn Close

Như vậy chúng ta đã hoàn tất các bước cài đặt AWS Command Line Interface (CLI) cơ bản.

 III. Switch role với AWS CLI

Trên Terminal của bạn, tìm mở file .aws/config. File này chứa thông tin thiết lập các role của bạn và tự động được tạo sau khi bạn đã thiết lập như ở Phần II.

$vi ~/.aws/config

Trong file sẽ hiển thị dưới dạng như sau:

[default]
region=ap-northeast-1

Chúng ta sẽ thêm vào phía dưới 1 đoạn code như sau:

[profile your-role-name]
role_arn = arn:aws:iam::123456789:role/your-role
source_profile = default
mfa_serial = arn:aws:iam::123456789:mfa/your-mfa
region = ap-northeast-1
  • [profile your-role-name]: your-role-name là tên role bạn muốn đặt
  • role_arn : Là Amazon Resource Names (ARNs) - định danh tài nguyên Amazon của role. Bạn có thể tìm thấy role arn sau khi switch role trên AWS Management Console và vào mục Identity and Access Management (IAM) => Roles.
  • source_profile= default: Là tài khoản user mặc định của bạn trước khi switch role
  • mfa_serial: Là định danh Multi-Factor Authentication (MFA) của bạn. Đây là tuỳ chọn không bắt buộc. Chỉ cần khi tài khoản AWS của bạn có thiết lập MFA.
  • region: Là vùng mặc định sau khi switch role

Cuối cùng, khi đã thiết lập xong, chúng ta hãy thử một số lệnh với CLI. Ví dụ như sau:

  • $aws iam list-users --profile your-role-name: Lệnh trả về danh sách user
  • $aws s3 ls --profile your-role-name: Lệnh trả về danh sách S3 bucket
  • $aws sts get-caller-identity --profile your-role-name: Trả về thông tin định danh về role hoặc IAM user thực hiện lời gọi
  • ...

Bất cứ lệnh nào kết thúc với --profile your-role-name sẽ được thực hiện dưới quyền của role bạn muốn dùng. Tất nhiên câu lệnh sẽ chỉ được thực thi nếu như role của bạn được cấp quyền thực hiện lệnh đó.

Chú ý: Bạn sẽ phải nhập MFA code trong trường hợp bạn có thiết lập MFA:

Enter MFA code for arn:aws:iam::123456789:mfa/your-role-name:

IV. Kết luận

Như vậy chúng ta đã có thể switch role với AWS CLI, từ đây chúng ta có thể thao tác với các command thay thế cho việc sử dụng trên AWS Management Console.

Tham khảo:

  1. https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html
  2. https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html
  3. https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-cli.html