Skip to main content

Command Palette

Search for a command to run...

Understanding AWS IAM STS: A Complete Overview

Hiểu rõ về AWS IAM STS

Updated
5 min read
Understanding AWS IAM STS: A Complete Overview

1. AWS IAM STS là gì?

AWS IAM STS (Security Token Service) là một dịch vụ được cung cấp bởi AWS cho phép tạo các chứng thực tạm thời để truy cập các tài nguyên AWS. STS thường được sử dụng trong các kịch bản khi bạn cần cung cấp truy cập ngắn hạn cho người dùng hoặc cho các dịch vụ đáng tin cậy. Việc cung cấp chứng thực tạm thời giúp giảm nguy cơ lộ thông tin truy cập dài hạn và giúp cải thiện tính bảo mật cho hệ thống.

IAM STS cho phép tạo các token truy cập tạm thời để được sử dụng bởi các dịch vụ hoặc tài nguyên khác nhau. Mỗi token bao gồm Access Key, Secret Access Key, và Session Token để truy cập các tài nguyên một cách an toàn và được phân quyền rõ ràng.

2. Tại sao sử dụng IAM STS?

IAM STS giúp bạn giải quyết vấn đề bảo mật khi các chính sách truy cập cần thay đổi thường xuyên hoặc khi các vai trò truy cập (roles) đòi hỏi quyền ngắn hạn. Việc sử dụng STS có các lợi ích như sau:

  • Truy cập tạm thời: Giảm nguy cơ lộ thông tin truy cập do token có thời gian hạn.

  • Cấp Quyền Linh Hoạt: Phù hợp cho các kịch bản truy cập ngắn hạn và thay đổi nhanh.

  • Đối tượng truy cập nhiều nơi: STS giúp cấp quyền truy cập một cách dễ dàng cho người dùng ở nhiều tài nguyên khác nhau.

3. Cách Hoạt Động Của STS

IAM STS hoạt động bằng cách tạo ra các chứng chỉ truy cập tạm thời, được gọи là tạm thời credentials. Các tài nguyên có thể truy cập thông qua các loại credentials này trong khoảng thời gian được chỉ định. Token tạm thời được tạo ra và bao gồm:

  • Access Key ID: Định danh duy nhất.

  • Secret Access Key: Khoá bí mật để xác thực Access Key.

  • Session Token: Token tạm thời xác nhận quyền truy cập.

Các đối tượng thường sử dụng IAM STS:

  • IAM Role: Roles có thể được sử dụng để tạo token truy cập tạm thời cho các tài nguyên hoặc dịch vụ khác.

  • Cross-Account Access: Có thể sử dụng STS để truy cập tài nguyên từ tài khoản AWS khác.

  • Federated User Access: Cho phép người dùng được xác thực từ các hệ thống ngoài (như SAML) truy cập vào tài nguyên AWS.

Ví dụ tạo IAM STS credentials:

aws sts assume-role \
  --role-arn arn:aws:iam::123456789012:role/MyRole \
  --role-session-name MySessionName

Lệnh này sừb tạo ra credentials tạm thời cho IAM Role, bao gồm Access Key ID, Secret Access Key, và Session Token.

4. Các Tình Huống Sử Dụng Thực Tế IAM STS

4.1 Cross-Account Access

Giả sử bạn có một ứng dụng đang chạy trong tài khoản AWS A, và ứng dụng này cần truy cập vào tài nguyên S3 trong tài khoản AWS B. Thay vì tạo IAM User trong tài khoản B và trao đổi thông tin xác thực một cách thủ công, bạn có thể sử dụng IAM STS để cấp quyền truy cập ngắn hạn.

Ví dụ: Trong tài khoản AWS B, tạo IAM Role với chính sách cho phép truy cập S3 và cho phép tài khoản AWS A assume vai trò này. Sau đó trong tài khoản AWS A, bạn sử dụng lệnh STS để assume role.

# Tài khoản B: Tạo IAM Role
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:root"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

Sau đó, từ tài khoản A, sử dụng STS để assume role và truy cập tài nguyên S3:

aws sts assume-role --role-arn arn:aws:iam::123456789012:role/RoleInAccountB --role-session-name CrossAccountSession

4.2 Federated User Access

Bạn có một tổ chức với hệ thống xác thực nội bộ (ví dụ SAML) và muốn cho phép nhân viên truy cập vào AWS mà không cần tạo IAM User cho từng người. STS có thể được sử dụng để cho phép người dùng được xác thực thông qua hệ thống nội bộ và nhận các token tạm thời để truy cập AWS.

Ví dụ: Sử dụng SAML để xác thực và sau đó sử dụng STS để cấp quyền truy cập ngắn hạn vào tài nguyên AWS.

# Cấu hình xác thực SAML
{
  "Effect": "Allow",
  "Action": "sts:AssumeRoleWithSAML",
  "Resource": "arn:aws:iam::123456789012:role/SAMLRole"
}

5. Bảo Mật và Quản Lý IAM STS

5.1 Giảm Thời Gian Hết Hạn Token

Một trong những cách bảo vệ tốt nhất là giảm thời gian hiệu lực của các token tạm thời. Token của STS có thể có thời gian hết hạn từ vài phút đến vài giờ, và bạn nên cấu hình sao cho chỉ cấp quyền truy cập trong khoảng thời gian ngắn nhất có thể.

Ví dụ:

aws sts assume-role --role-arn arn:aws:iam::123456789012:role/MyRole --role-session-name MySessionName --duration-seconds 900

Lệnh trên tạo một phiên với thời gian hiệu lực chỉ 15 phút.

5.2 Xác Định Chính Xác Các Quyền Truy Cập

Hãy chắc chắn rằng chỉ cấp quyền cho những hành động cụ thể cần thiết. Ví dụ, nếu một role chỉ cần đọc dữ liệu từ S3, bạn nên chỉ định quyền "s3:GetObject" thay vì gán quyền "s3:*".

Ví dụ Chính Sách:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject"
      ],
      "Resource": "arn:aws:s3:::example-bucket/*"
    }
  ]
}

5.3 Giám Sát và Ghi Log

Sử dụng AWS CloudTrail để theo dõi mọi hoạt động liên quan đến IAM STS. Điều này giúp bạn phát hiện sớm các hoạt động bất thường và đưa ra các biện pháp khắc phục kịp thời.

Ví dụ:

  • Kích hoạt AWS CloudTrail cho tất cả tài khoản AWS của bạn.

  • Theo dõi các hành động liên quan đến "sts:AssumeRole" để phát hiện các phiên không mong muốn.

12 views

More from this blog

Devops

39 posts