AWS Multi-Account Architecture with Terraform, Yeoman, and Jenkins
Bài tóm tắt Slalom Build 2018 2. Tăng trưởng Độ khó: Trung bình
Slalom Build · 2018 · 2. Tăng trưởng · Độ khó: Trung bình — bài gốc
Bài của một công ty tư vấn, mô tả cách đã làm cho khách hàng Discover (đồng tác giả là người của Discover); phần lớn bài là code Terraform mẫu. Mọi nhận định ghi "theo Slalom".
Bối cảnh
- Một tài khoản AWS đơn giản lúc đầu, nhưng theo Slalom hầu hết tổ chức thấy cách này không scale và muốn cô lập workload theo tài khoản.
Thay đổi chính
- Hai loại tài khoản trong AWS Organizations:
- Tài khoản lõi: master (bật Organizations, tạo mọi tài khoản khác), identity (nơi duy nhất mọi người đăng nhập, nối AD/SAML), logging (nhận CloudTrail, VPC flow log của mọi tài khoản), core services (Jenkins, Terraform Enterprise dùng chung).
- Tài khoản team: mỗi team một tài khoản, đồng nhất để tạo và bảo trì bằng cùng một pipeline.
- Không tạo IAM user trong tài khoản team: người dùng assume role từ tài khoản identity, tránh access key sống lâu. Policy của role giới hạn hành động (cấm tạo IAM user), tài nguyên (không được sửa trail CloudTrail, VPC, Lambda giám sát của admin) và điều kiện. SCP bật/tắt dịch vụ theo nhánh của cây tổ chức (sandbox mở rộng, production chỉ dịch vụ đã duyệt).
- VPC do pipeline tạo trong mỗi tài khoản team (không để VPC mặc định, không để team tự tạo): chủ động cấp CIDR không chồng nhau, tự nối mạng công ty qua Direct Connect, peering tới tài khoản core services, bộ subnet chuẩn.
- Pipeline tạo tài khoản: generator Yeoman sinh một project mỗi tài khoản (Terraform cho VPC, role, CloudTrail + Jenkinsfile); ưu tiên Terraform khi có resource gốc (khai báo, idempotent), không thì script Python SDK viết idempotent. Metadata mọi tài khoản ghi vào một bảng DynamoDB để script và Lambda tra cứu.
Vì sao
- Theo Slalom: đồng nhất tài khoản team cho phép tự động hoá toàn bộ vòng đời; một điểm đăng nhập và role có giới hạn tài nguyên giữ cho các thành phần giám sát/kiểm toán không bị chính team sửa.
Bài học cho SWE
- Ranh giới tài khoản cloud là ranh giới bảo mật và bán kính ảnh hưởng rẻ nhất; muốn có nhiều tài khoản thì việc tạo tài khoản phải là một pipeline, không phải việc tay.
- Log kiểm toán nên nằm ở một tài khoản mà team sản phẩm không có quyền ghi.
Liên quan
#AWS Organizations#Multi-account#SCP#IAM role#Assume role#Terraform#Yeoman#Jenkins#VPC#Direct Connect#Account vending
Được nhắc tới trong
Chủ đề (1)
Công ty (1)