Secure access to 100 AWS accounts
Bài tóm tắt Segment 2018 2. Tăng trưởng Độ khó: Trung bình
Segment · 2018 · 2. Tăng trưởng · Độ khó: Trung bình — bài gốc
Bối cảnh
- Segment bắt đầu trong một tài khoản AWS, năm 2017 tách thành dev, stage, prod và "ops". Đầu 2018 họ có vài chục tài khoản và thêm khoảng một tài khoản mỗi 1–2 tuần, hướng tới tài khoản riêng theo team và theo hệ thống.
- Lý do chia nhỏ tài khoản (theo Segment): cô lập bảo mật giữa các hệ, phục vụ các sáng kiến GDPR, và giới hạn bán kính ảnh hưởng của rate limit AWS (mỗi tài khoản có hạn mức riêng).
- Cách cũ: nhân viên đăng nhập tài khoản "ops" bằng email, mật khẩu, 2FA, rồi
AssumeRolesang roleops-adminở dev/stage/prod; mỗi người giữ IAM user key trong keychain quaaws-vault, mọi người dùng chung một~/.aws/config.
Thay đổi chính
- Hub-and-spoke qua identity provider: nhân viên đăng nhập Okta vào tài khoản hub ("ops"), từ đó
sts:AssumeRolesang các tài khoản spoke. Hướng dẫn của Okta gợi ý nối IdP vào từng tài khoản; Segment không làm vậy vì cách đó phá tính năng chuyển tài khoản có sẵn của AWS và khó audit team nào có role nào. - Role theo team ở hub: mỗi team có một role ở hub, chủ yếu chứa quyền assume sang các role ở spoke. Ví dụ: team FP&A chỉ xem billing và reserved capacity, không vào spoke nào; team Foundation & Reliability (trực on-call) có
ReadOnlyvàAdministratorở mọi tài khoản. Nhóm trong Okta gắn với role ở hub. - Hai module Terraform (role ở hub, role ở spoke) chỉ khác nhau ở trust relationship: hub tin IdP, spoke chỉ tin tài khoản hub.
- Không nhân viên nào còn AWS key: mọi truy cập qua IdP với credential tạm từ SAML assertion.
- Giữ trải nghiệm cũ: team tooling viết
aws-okta(mã nguồn mở) thay gần như y hệtaws-vault: mật khẩu Okta trong keychain, push 2FA, SAML → credential tạm; thêm lệnhloginmở console bằng Custom Federated Login vì bookmark chuyển role của AWS chỉ hỗ trợ 5 đích. Config theo team nằm trong repo dotfiles, sinh bằngrobo aws.configdựa vào biếnSEGMENT_TEAMmà mọi engineer đã có.
Vì sao
- Theo Segment, chất lượng của
aws-oktalà lý do chính việc thu hồi toàn bộ key của engineer diễn ra êm: cách làm việc hằng ngày gần như không đổi. - Họ dự kiến khoảng 50 tài khoản cuối 2018 và cho rằng kiến trúc đủ cho hàng trăm tài khoản.
Bài học cho SWE
- Chia tài khoản cloud là một cách giới hạn bán kính ảnh hưởng, cả cho bảo mật lẫn cho rate limit của nhà cung cấp; cái giá là độ phức tạp của quyền truy cập, nên cần gom quyền về một điểm (hub + IdP) trước khi số tài khoản tăng.
- Gỡ credential dài hạn của người là thay đổi phá vỡ quy trình: muốn được chấp nhận thì công cụ thay thế phải gần như "thả vào là chạy".
- Đối chiếu: năm 2019 Postman vẫn dùng IAM user có key và audit định kỳ (Postman 2019); Segment bỏ hẳn key của người.
Liên quan
- Segment 2018 · Postman 2019 · Twitter 2021 (gom về SSO rồi đổi yếu tố thứ hai) · Uber 2025
- Xác thực và phân quyền (authn/authz) · Bảo mật hạ tầng và quản lý secret
Được nhắc tới trong
Công ty (1)