0
0
Lập trình
Admin Team
Admin Teamtechmely

Hướng Dẫn Chi Tiết Tạo và Quản Lý IAM User Trên AWS Với CloudFormation

Đăng vào 1 tuần trước

• 6 phút đọc

Tổng Quan

Trong bài viết này, chúng tôi sẽ hướng dẫn bạn các bước để tạo và phân quyền cho IAM User trên AWS bằng cách sử dụng CloudFormation Template. Bạn sẽ học cách thiết lập một IAM User, gán chính sách và nhóm cho người dùng này, cũng như quản lý chúng qua AWS CLI.

Hướng Dẫn Thực Hành

Bước 1: Tạo Tập Tin Template

Đầu tiên, bạn cần tạo một tập tin có tên là template.yml với nội dung mô tả chi tiết như sau:

Copy
## =================== MÔ TẢ ===================
Description: >-
  Mẫu template CloudFormation của AWS
  Tạo một IAM User và tùy chọn gán người dùng vào nhóm IAM
  Tùy chọn nhúng các chính sách quản lý AWS, chính sách quản lý tự tạo và các chính sách nội tuyến trong người dùng
  Tài liệu AWS: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-user.html

Tiếp theo, bạn cần bổ sung các tham số cấu hình cho người dùng trong template:

Copy
Parameters:
  paramUserName:
    Description: Tên duy nhất cho người dùng mới
    Type: String
    AllowedPattern: "^[a-zA-Z][a-zA-Z0-9]{1,64}$"
    ConstraintDescription: Tên người dùng phải từ 1 đến 64 ký tự chữ và số, bắt đầu bằng một ký tự chữ cái.
  paramUserPassword:
    Description: Mật khẩu cho tài khoản người dùng mới
    Type: String
    NoEcho: 'true' # Ẩn giá trị tham số để không hiển thị trên giao diện
    AllowedPattern: ^[a-zA-Z][a-zA-Z0-9!@#$%&]{8,32}$
    ConstraintDescription: Mật khẩu phải từ 8 đến 32 ký tự, bắt đầu bằng một chữ cái và có thể chứa ký tự đặc biệt !@#$%&.
  paramGroups:
    Description: 'Danh sách tên nhóm để thêm người dùng (tuỳ chọn)'
    Type: CommaDelimitedList
    Default: ''
  paramManagedPolicy:
    Type: String
    Description: Chọn Chính sách Quản lý đã định nghĩa để gán cho người dùng
    AllowedValues:
      - DatabaseAdministrator
      - SystemAdministrator
      - DeveloperPowerUser
      - View-Only
      - None
    Default: None
  paramTagValue:
    Description: Giá trị nhãn để xác định tài nguyên cho việc triển khai
    Type: String
    Default: CloudFormation IAM

Tham Số Trong Template

Ở đây, ta định nghĩa các tham số để cấu hình cho người dùng, bao gồm:

  • paramUserName: Tên người dùng (username)
  • paramUserPassword: Mật khẩu (password)
  • paramGroups: Danh sách nhóm cho người dùng
  • paramManagedPolicy: Chính sách cần gán cho người dùng
  • paramTagValue: Thẻ gán cho người dùng

Tiếp theo, chúng ta sẽ tạo một cấu trúc mapping để lưu trữ ARN (Tên tài nguyên AWS) cho các chính sách trong các giá trị của paramManagedPolicy:

Copy
Mappings:
  mapManagedPolicies:
    DatabaseAdministrator: 
      ARN: arn:aws:iam::aws:policy/job-function/DatabaseAdministrator
    SystemAdministrator: 
      ARN: arn:aws:iam::aws:policy/job-function/SystemAdministrator
    DeveloperPowerUser: 
      ARN: arn:aws:iam::aws:policy/PowerUserAccess
    View-Only: 
      ARN: arn:aws:iam::aws:policy/job-function/ViewOnlyAccess
    None: 
      ARN: arn:aws:iam::aws:policy/NoAccess

Tiếp theo, tạo hai điều kiện để xác định xem có nhóm hay chính sách nào được chỉ định không:

Copy
Conditions:
  hasGroups:
    !Not [!Equals [ !Join ['', !Ref paramGroups], '' ] ]
  hasManagedPolicy:
    !Not [!Equals [ !Ref paramManagedPolicy, 'None'] ]

Tạo Resources

Cuối cùng, tạo một đối tượng Resources như sau:

Copy
Resources:
  myUser:
    Type: 'AWS::IAM::User'
    Properties:
      UserName: !Ref paramUserName
      LoginProfile:
        Password: !Ref paramUserPassword
        PasswordResetRequired: true
      Groups: !If [ hasGroups, !Ref paramGroups, !Ref "AWS::NoValue"]
      ManagedPolicyArns:
        - !If [ hasManagedPolicy, !FindInMap [ mapManagedPolicies, !Ref paramManagedPolicy, ARN], !Ref "AWS::NoValue" ]
        - arn:aws:iam::aws:policy/AWSCloud9Administrator
      Policies:
        - PolicyName: inlineS3ReadOnlyPolicy
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Action:
                  - 's3:Get*'
                  - 's3:List*'
                Resource: '*'
        - PolicyName: inlineS3CreateBucketOnlyPolicy
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Action:
                  - 's3:CreateBucket*'
                Resource: '*'
      Tags:
        - Key: Name
          Value: !Ref paramTagValue

Trong phần này, chúng ta đã gán cho người dùng hai loại chính sách:

  • ManagedPolicyArns: Chính sách được định nghĩa sẵn bởi AWS.
  • Policies: Chính sách nội tuyến được người dùng định nghĩa.

Bạn có thể tham khảo file template hoàn chỉnh ngay tại đây.

Bước 2: Khởi Tạo Stack

Sau khi hoàn tất việc tạo template, bạn có thể thực hiện lệnh sau để khởi tạo stack trên AWS:

Copy
aws cloudformation create-stack
--capabilities CAPABILITY_NAMED_IAM
--stack-name iam-stack
--template-body file://template.yml
--parameters ParameterKey=paramUserName,ParameterValue=johndev ParameterKey=paramUserPassword,ParameterValue=johnPass@123 ParameterKey=paramManagedPolicy,ParameterValue=DeveloperPowerUser

Lưu ý: Bạn có thể thay đổi giá trị của các tham số theo ý muốn.

Truy cập giao diện web của CloudFormation để kiểm tra trạng thái của stack vừa tạo. Trong tab Resources, hãy click vào người dùng để kiểm tra các chính sách đã được gán trong tab Permissions.

Bước 3: Cập Nhật Stack

Trong bước này, bạn có thể cập nhật quyền cho người dùng bằng cách thay đổi tham số paramManagedPolicy và tạo change-set:

Copy
aws cloudformation create-change-set --change-set-name update-managed-policy\
  --capabilities CAPABILITY_NAMED_IAM \
  --stack-name iam-stack \
  --use-previous-template \
  --parameters ParameterKey=paramUserName,ParameterValue=johndev ParameterKey=paramUserPassword,ParameterValue=johnPass@123 ParameterKey=paramManagedPolicy,ParameterValue=View-Only

Sau khi tạo change-set, áp dụng nó bằng cách sử dụng lệnh sau:

Copy
aws cloudformation execute-change-set \
    --change-set-name update-managed-policy \
    --stack-name iam-stack

Khi việc cập nhật hoàn tất, kiểm tra quyền của người dùng; bạn sẽ thấy chính sách trước đó đã được thay đổi thành chính sách ViewOnlyAccess.

Bước 4: Xóa Stack

Để xóa các tài nguyên vừa khởi tạo trong stack, hãy chạy lệnh sau:

Copy
aws cloudformation delete-stack --stack-name iam-stack

Kết Luận

Trong bài viết này, chúng tôi đã hướng dẫn chi tiết cách tạo và phân quyền cho User sử dụng CloudFormation template. Hy vọng rằng bài viết sẽ hữu ích và giúp bạn có được sự hiểu biết sâu sắc hơn về việc quản lý IAM User trên AWS. Xin chân thành cảm ơn bạn đã đọc bài viết!
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào