[AWS] Chapter 1: AWS IAM & AWS CLI

  • Kai
  • August 23, 2024

I. IAM (Identity and Access Management)

IAM là dịch vụ quản lý quyền truy cập của AWS. Nó giúp bạn quản lý người dùng, nhóm người dùng, và quyền truy cập vào tài nguyên của AWS. Trong IAM, chúng ta sẽ có một vài điểm cần chú ý như sau:

  • Root Account: Trong AWS thì IAM sẽ được tạo ra mặc định khi bạn đăng ký tài khoản AWS. Root Account có toàn quyền truy cập vào tất cả các tài nguyên của AWS, vì vậy bạn không nên sử dụng Root Account để làm việc hàng ngày.
  • User: Người dùng là một thực thể được tạo ra trong IAM, mỗi người dùng sẽ có một tên đăng nhập và một mã truy cập riêng. Người dùng sẽ được gán vào các nhóm người dùng để quản lý quyền truy cập.
  • Group: Nhóm người dùng là một tập hợp các người dùng, bạn có thể gán quyền truy cập vào tài nguyên cho một nhóm người dùng thay vì gán từng người dùng một cách riêng lẻ.
  • Người dùng không nhất thiết phỉa thuộc về một nhóm. Một nhóm thì có thể chứa nhiều người dùng.

1. Policy and Permission

Policies (Chính sách) và Permissions (Quyền truy cập) là hai khái niệm quan trọng trong IAM của AWS:

  • Policies: Chính sách là tập hợp các quy tắc xác định những hành động nào được phép hoặc không được phép trên các tài nguyên AWS. Chính sách được viết bằng JSON và có thể được gán cho người dùng, nhóm người dùng, hoặc vai trò (roles). Có hai loại chính sách chính:
  • Managed Policies: Chính sách được quản lý bởi AWS hoặc bởi bạn. AWS Managed Policies là các chính sách được AWS tạo sẵn và duy trì. Customer Managed Policies là các chính sách do bạn tạo và quản lý.
  • Inline Policies: Chính sách được gắn trực tiếp vào một người dùng, nhóm người dùng, hoặc vai trò cụ thể. Inline Policies không thể được tái sử dụng cho các thực thể khác.
  • Permissions: Quyền truy cập là kết quả của việc áp dụng các chính sách. Quyền truy cập xác định những hành động nào một người dùng, nhóm người dùng, hoặc vai trò có thể thực hiện trên các tài nguyên AWS. Quyền truy cập có thể được cấp hoặc từ chối dựa trên các chính sách được gán.

Note: Trong AWS, bạn áp dụng nguyên tắc ít đặc quyền nhất (least privilege principle): không cấp nhiều quyền hơn mức cần thiết cho người dùng.

2. IAM Policies Structure

IAM Policies trong AWS được viết bằng JSON và có cấu trúc như sau:

{
  "Version": "2012-10-17", // Policy language version, luôn luôn là "2012-10-17", không được đổi.
  "Id": "Policy123" // Optional, unique identifier for the policy.
  // Statement là một mảng các quy tắc, mỗi quy tắc bao gồm các trường như sau:
  "Statement": [
    {
      "Sid": "Stmt1234567890", // Optional, unique identifier for the statement.
      "Effect": "Allow", // Allow or Deny
      "Principal": { // Account, user, role, or service được chính sách được áp dụng.
        "AWS": "arn:aws:iam::123456789012:user/ExampleUser"
      },
      "Action": [ // Danh sách những action mà policy cho phép hoặc từ chối
        "ec2:DescribeInstances",
        "ec2:StartInstances",
        "ec2:StopInstances"
      ],
      "Resource": "arn:aws:ec2:region:account-id:instance/instance-id", // Resource mà policy áp dụng
      "Condition": { // Optional, điều kiện để áp dụng policy
        "StringEquals": {
          "ec2:InstanceType": "t2.micro"
        }
      }
    }
  ]
}

Có thể truy cập vào đây để xem Condition. IAM JSON policy elements: Condition operators

3. IAM – Password Policy

  • Strong passwords = bảo mật cao hơn cho tài khoản của bạn.
  • Trong AWS, bạn có thể thiết lập một chính sách mật khẩu:
    • Đặt độ dài tối thiểu cho mật khẩu.
    • Yêu cầu các loại ký tự cụ thể:
      • Bao gồm chữ cái viết hoa.
      • Chữ cái viết thường.
      • Số.
      • Ký tự không phải chữ cái số.
    • Cho phép tất cả người dùng IAM thay đổi mật khẩu của họ.
    • Yêu cầu người dùng thay đổi mật khẩu sau một thời gian (hết hạn mật khẩu).
    • Ngăn chặn việc sử dụng lại mật khẩu.

4. Multi-Factor Authentication (MFA)

Multi-Factor Authentication (MFA) là một lớp bảo mật bổ sung cho tài khoản AWS của bạn. Khi sử dụng MFA, người dùng sẽ cần cung cấp hai hoặc nhiều yếu tố xác thực để đăng nhập vào tài khoản AWS hoặc thực hiện các hành động nhạy cảm. Điều này giúp bảo vệ tài khoản của bạn khỏi các truy cập trái phép, ngay cả khi mật khẩu của bạn bị đánh cắp hoặc bị hack.

Lý do sử dụng MFA:

  • Bảo vệ tài khoản Root và người dùng IAM: Tài khoản Root và người dùng IAM có quyền truy cập cao và có thể thay đổi cấu hình hoặc xóa tài nguyên trong tài khoản AWS của bạn. Việc bảo vệ các tài khoản này là rất quan trọng để đảm bảo an toàn cho tài nguyên của bạn.
  • MFA = mật khẩu bạn biết + thiết bị bảo mật bạn sở hữu: MFA yêu cầu người dùng cung cấp mật khẩu (yếu tố mà bạn biết) và một mã xác thực từ thiết bị bảo mật (yếu tố mà bạn sở hữu). Điều này làm tăng độ khó cho kẻ tấn công khi cố gắng truy cập vào tài khoản của bạn.

Lợi ích chính của MFA:

  • Ngăn chặn truy cập trái phép: Nếu mật khẩu của bạn bị đánh cắp hoặc bị hack, tài khoản của bạn vẫn được bảo vệ bởi lớp xác thực thứ hai. Kẻ tấn công sẽ không thể truy cập vào tài khoản của bạn mà không có thiết bị bảo mật.
  • Tăng cường bảo mật: MFA giúp tăng cường bảo mật cho tài khoản AWS của bạn bằng cách yêu cầu nhiều yếu tố xác thực. Điều này làm giảm nguy cơ bị tấn công và bảo vệ tài nguyên của bạn khỏi các mối đe dọa tiềm ẩn.

Cách thiết lập MFA trong AWS:

  1. Đăng nhập vào AWS Management Console: Sử dụng tài khoản Root hoặc người dùng IAM có quyền quản trị.
  2. Đi tới trang IAM: Từ bảng điều khiển AWS, chọn “IAM” để truy cập vào dịch vụ quản lý quyền truy cập.
  3. Chọn người dùng cần thiết lập MFA: Trong phần “Users”, chọn người dùng mà bạn muốn thiết lập MFA.
  4. Kích hoạt MFA: Trong tab “Security credentials”, chọn “Manage MFA device” và làm theo hướng dẫn để kích hoạt thiết bị MFA. Bạn có thể chọn sử dụng ứng dụng xác thực (như Google Authenticator) hoặc thiết bị phần cứng (như YubiKey).

Các loại thiết bị MFA:

  • Ứng dụng xác thực: Các ứng dụng như Google Authenticator, Authy, hoặc Microsoft Authenticator có thể được sử dụng để tạo mã xác thực MFA.
  • Thiết bị phần cứng: Các thiết bị như YubiKey hoặc các token bảo mật khác có thể được sử dụng để cung cấp mã xác thực MFA.

Việc sử dụng MFA là một bước quan trọng để bảo vệ tài khoản AWS của bạn và đảm bảo rằng chỉ những người dùng được ủy quyền mới có thể truy cập vào tài nguyên của bạn. Hãy đảm bảo rằng bạn đã kích hoạt MFA cho tài khoản Root và tất cả người dùng IAM có quyền truy cập quan trọng.

II. AWS CLI (Command Line Interface)

  • AWS CLI là một công cụ 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 lệnh trong shell dòng lệnh của bạn.
  • Truy cập trực tiếp vào các API công khai của các dịch vụ AWS.
  • Bạn có thể phát triển các script để quản lý tài nguyên của mình.
  • Mã nguồn mở: https://github.com/aws/aws-cli
  • Thay thế cho việc sử dụng AWS Management Console.

1. AWS SDK là gì?

AWS SDK (Software Development Kit) là một bộ công cụ phần mềm giúp các nhà phát triển dễ dàng truy cập và quản lý các dịch vụ AWS thông qua mã lập trình. AWS SDK cung cấp các API cụ thể cho từng ngôn ngữ lập trình, giúp bạn tích hợp các dịch vụ AWS vào ứng dụng của mình một cách dễ dàng và hiệu quả.

Các tính năng chính của AWS SDK:
  • APIs cụ thể cho từng ngôn ngữ lập trình: AWS SDK cung cấp một tập hợp các thư viện cho nhiều ngôn ngữ lập trình khác nhau, giúp bạn dễ dàng sử dụng các dịch vụ AWS trong ngôn ngữ mà bạn quen thuộc.
  • Truy cập và quản lý các dịch vụ AWS: AWS SDK cho phép bạn truy cập và quản lý các dịch vụ AWS một cách lập trình, giúp tự động hóa các tác vụ và tích hợp các dịch vụ AWS vào ứng dụng của bạn.
  • Tích hợp vào ứng dụng của bạn: AWS SDK được nhúng trực tiếp vào ứng dụng của bạn, giúp bạn dễ dàng gọi các dịch vụ AWS từ mã nguồn của mình.
Các loại SDK được hỗ trợ:
  • SDKs cho các ngôn ngữ lập trình: AWS SDK hỗ trợ nhiều ngôn ngữ lập trình phổ biến như JavaScript, Python, PHP, .NET, Ruby, Java, Go, Node.js, và C++.
  • Mobile SDKs: AWS cũng cung cấp các SDK cho phát triển ứng dụng di động, bao gồm Android và iOS.
  • IoT Device SDKs: Đối với các thiết bị IoT, AWS cung cấp các SDK như Embedded C và Arduino để giúp bạn dễ dàng kết nối và quản lý các thiết bị IoT của mình.
Ví dụ về AWS SDK:
  • AWS CLI: AWS Command Line Interface (CLI) được xây dựng dựa trên AWS SDK cho Python (Boto3). AWS CLI cho phép bạn tương tác với các dịch vụ AWS thông qua dòng lệnh, và nó sử dụng AWS SDK để thực hiện các lệnh này.
Lợi ích của việc sử dụng AWS SDK:
  • Tự động hóa: AWS SDK giúp bạn tự động hóa các tác vụ quản lý và triển khai tài nguyên AWS, giúp tiết kiệm thời gian và giảm thiểu lỗi do con người gây ra.
  • Tích hợp dễ dàng: Với các API cụ thể cho từng ngôn ngữ lập trình, AWS SDK giúp bạn dễ dàng tích hợp các dịch vụ AWS vào ứng dụng của mình mà không cần phải học một ngôn ngữ mới.
  • Hỗ trợ đa nền tảng: AWS SDK hỗ trợ nhiều ngôn ngữ lập trình và nền tảng khác nhau, giúp bạn phát triển ứng dụng trên nhiều môi trường khác nhau một cách dễ dàng.
Tài liệu và tài nguyên:

Việc sử dụng AWS SDK giúp bạn tận dụng tối đa các dịch vụ AWS và tích hợp chúng vào ứng dụng của mình một cách hiệu quả và linh hoạt. Hãy khám phá và sử dụng AWS SDK để phát triển các ứng dụng mạnh mẽ và an toàn trên nền tảng AWS.

2. AWS CLI Installation

AWS CLI (Command Line Interface) là một công cụ mạnh mẽ cho phép bạn tương tác với các dịch vụ AWS từ dòng lệnh. Dưới đây là hướng dẫn chi tiết để cài đặt AWS CLI trên ba hệ điều hành phổ biến: Linux, macOS và Windows.

2.1. Cài đặt AWS CLI trên Linux
  1. Cài đặt các gói cần thiết:
  • Trước tiên, bạn cần cài đặt unzipcurl nếu chưa có:
    sudo apt-get update
    sudo apt-get install unzip curl -y
    
  1. Tải xuống gói cài đặt AWS CLI:
  • Tải xuống phiên bản mới nhất của AWS CLI:
    curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
    
  1. Giải nén gói cài đặt:
  • Giải nén tệp đã tải xuống:
    unzip awscliv2.zip
    
  1. Cài đặt AWS CLI:
  • Chạy lệnh cài đặt:
    sudo ./aws/install
    
  1. Xác minh cài đặt:
  • Kiểm tra phiên bản AWS CLI để đảm bảo cài đặt thành công:
    aws --version
    
2.2. Cài đặt AWS CLI trên macOS
  1. Cài đặt Homebrew (nếu chưa có):
  • Homebrew là một trình quản lý gói phổ biến trên macOS. Nếu chưa cài đặt, bạn có thể cài đặt Homebrew bằng lệnh sau:
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    
  1. Cài đặt AWS CLI bằng Homebrew:
  • Sử dụng Homebrew để cài đặt AWS CLI:
    brew install awscli
    
  1. Xác minh cài đặt:
  • Kiểm tra phiên bản AWS CLI để đảm bảo cài đặt thành công:
    aws --version
    
2.3. Cài đặt AWS CLI trên Windows
  1. Tải xuống gói cài đặt AWS CLI:
  • Truy cập trang tải xuống AWS CLI và tải xuống tệp cài đặt MSI cho Windows: AWS CLI MSI Installer
  • Ngoài ra, bạn có thể chạy lệnh msiexec để chạy trình cài đặt MSI
msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi
  1. Chạy tệp cài đặt:
  • Mở tệp AWSCLIV2.msi và làm theo hướng dẫn trên màn hình để cài đặt AWS CLI.
  1. Xác minh cài đặt:
  • Mở Command Prompt hoặc PowerShell và kiểm tra phiên bản AWS CLI để đảm bảo cài đặt thành công:
    aws --version
    

3. AWS CLI Configuration

Sau khi cài đặt AWS CLI, bạn cần cấu hình nó để có thể sử dụng. Dưới đây là các bước để cấu hình AWS CLI:

  1. Chạy lệnh cấu hình:
  • Mở terminal (Linux/macOS) hoặc Command Prompt/PowerShell (Windows) và chạy lệnh sau:
    aws configure
    
  1. Nhập các thông tin cần thiết:
  • Bạn sẽ được yêu cầu nhập các thông tin sau:
    • AWS Access Key ID: ID khóa truy cập của bạn.
    • AWS Secret Access Key: Khóa bí mật của bạn.
    • Default region name: Tên vùng mặc định (ví dụ: us-west-2).
    • Default output format: Định dạng đầu ra mặc định (ví dụ: json).
  1. Cấu hình thủ công:
  • Bạn cũng có thể cấu hình AWS CLI bằng cách chỉnh sửa tệp cấu hình. Tệp cấu hình thường nằm ở:
    • Linux/macOS: ~/.aws/config
    • Windows: C:\Users\<YourUsername>\.aws\config
  • Nội dung tệp cấu hình có thể như sau:
    [default]
    aws_access_key_id = YOUR_ACCESS_KEY_ID
    aws_secret_access_key = YOUR_SECRET_ACCESS_KEY
    region = YOUR_DEFAULT_REGION
    output = json
    
  1. Sử dụng các profile khác nhau:
  • Bạn có thể tạo nhiều profile để sử dụng các thông tin cấu hình khác nhau. Để tạo một profile mới, sử dụng lệnh:
    aws configure --profile profile_name
    
  • Để sử dụng một profile cụ thể, thêm tùy chọn --profile vào lệnh AWS CLI:
    aws s3 ls --profile profile_name
    
  1. Chuyển đổi giữa các profile:
  • Bạn có thể chuyển đổi giữa các profile bằng cách thiết lập biến môi trường AWS_PROFILE:
    export AWS_PROFILE=profile_name
    
  • Hoặc bạn có thể chỉ định profile trực tiếp trong lệnh:
    aws s3 ls --profile profile_name
    
  1. Kiểm tra cấu hình:
  • Để kiểm tra cấu hình hiện tại, bạn có thể sử dụng lệnh:
    aws configure list
    
  1. Cấu hình nâng cao:
  • Bạn có thể thêm các cấu hình nâng cao như thời gian chờ (timeout), số lần thử lại (retry), v.v. vào tệp cấu hình:
    [default]
    aws_access_key_id = YOUR_ACCESS_KEY_ID
    aws_secret_access_key = YOUR_SECRET_ACCESS_KEY
    region = YOUR_DEFAULT_REGION
    output = json
    cli_follow_urlparam = false
    cli_timestamp_format = iso8601
    

Việc cấu hình AWS CLI giúp bạn dễ dàng quản lý và tương tác với các dịch vụ AWS một cách hiệu quả và thuận tiện.

III. Tổng kết

Trong bài viết này, chúng ta đã tìm hiểu về hai công cụ quan trọng của AWS: IAM và AWS CLI.

  • IAM (Identity and Access Management): Là dịch vụ quản lý quyền truy cập của AWS, giúp bạn quản lý người dùng, nhóm người dùng và quyền truy cập vào tài nguyên của AWS. Chúng ta đã thảo luận về các khái niệm cơ bản như Root Account, User, Group, Policy và Permission, cũng như cách thiết lập chính sách mật khẩu và Multi-Factor Authentication (MFA) để tăng cường bảo mật.

  • AWS CLI (Command Line Interface): Là công cụ cho phép bạn tương tác với các dịch vụ AWS từ dòng lệnh. Chúng ta đã hướng dẫn chi tiết cách cài đặt AWS CLI trên các hệ điều hành Linux, macOS và Windows, cũng như cách cấu hình và sử dụng các profile khác nhau để quản lý tài nguyên AWS một cách hiệu quả.

Việc hiểu và sử dụng thành thạo IAM và AWS CLI sẽ giúp bạn quản lý và bảo vệ tài nguyên AWS của mình một cách hiệu quả và an toàn hơn. Hãy tiếp tục khám phá và áp dụng các kiến thức này vào công việc hàng ngày của bạn để tận dụng tối đa các dịch vụ mà AWS cung cấp.

Bài Viết Liên Quan

Xây dựng RestAPI theo mô hình Serverless

Xây dựng RestAPI theo mô hình Serverless

  • Kai
  • August 23, 2024

Xin chào tất cả các bạn, lại là mình đây. Hôm nay mình sẽ chia sẻ một kiến trúc được xây dựng theo mô hình serverless.

Đọc Thêm
Ứng dụng AWS Rekognition cùng Fipix

Ứng dụng AWS Rekognition cùng Fipix

Xin chào tất cả các bạn, lại là mình đây. Ngày 26.07 vừa rồi mình rất may mắn khi được sếp của mình và các anh chị em ở Cloud Kinetics Việt Nam tạo điều kiện để tham gia, trình bày trong sự kiện Unlock Your Future with GenAI.

Đọc Thêm
[AWS] Chapter 0: AWS là gì?

[AWS] Chapter 0: AWS là gì?

  • Kai
  • June 24, 2024

Giới thiệu AWS (Amazon Web Services) là một nền tảng điện toán đám mây được phát triển và cung cấp bởi Amazon.

Đọc Thêm