Nhiều nhà cung cấp dịch vụ đám mây cung cấp dịch vụ IAM như một biện pháp kiểm soát quyền truy cập vào tài nguyên đám mây. Dịch vụ này xác định ai được xác thực và được phép truy cập vào các tài nguyên này. Danh tính AWS IAM bao gồm người dùng, nhóm và vai trò.
Trong hướng dẫn này, chúng tôi sẽ tập trung cụ thể vào các vai trò IAM. Danh tính IAM này giống như người dùng IAM ở chỗ chúng ta có thể đính kèm các chính sách IAM vào danh tính đó. Các chính sách này xác định phạm vi cấp quyền cho danh tính này. Không giống như người dùng IAM được liên kết với một người dùng duy nhất và có thông tin xác thực dài hạn, các vai trò tuân theo một chiến lược khác. Chúng có thông tin xác thực bảo mật tạm thời và được những người khác cần chúng đảm nhận/tiếp nhận. Người dùng, ứng dụng hoặc dịch vụ thông thường không có quyền truy cập vào tài nguyên AWS của bạn sẽ đảm nhận các vai trò để có quyền truy cập này.
Người dùng phải có quyền chuyển một vai trò cho một dịch vụ. Đây là một khía cạnh bảo mật mạnh mẽ vì chỉ những người dùng được ủy quyền mới được phép chuyển một vai trò cho dịch vụ. Hơn nữa, người quản trị có thể kiểm soát loại vai trò mà người dùng có thể chuyển cho dịch vụ.
Người dùng IAM có thể chuyển một vai trò cho dịch vụ EC2, tại thời điểm khởi chạy phiên bản, bằng cách sử dụng ba thực thể bên dưới:
Bước 1. Đi đến bảng điều khiển IAM từ tài khoản quản trị viên hoặc gốc và chọn ‘Vai trò’ trong tùy chọn Quản lý quyền truy cập. Nhấp vào nút ‘Tạo vai trò’.
Bước 2. Trong phần ‘Chọn thực thể đáng tin cậy’, bạn sẽ thấy tùy chọn ‘Loại thực thể đáng tin cậy’ và ‘Trường hợp sử dụng’. Đối với mục trước, hãy chọn tùy chọn ‘Dịch vụ AWS’ và đối với mục sau, hãy chọn tùy chọn ‘EC2’.
Bước 3. Trong phần tiếp theo ‘Thêm quyền’, chúng tôi sẽ đính kèm chính sách ‘S3ReadOnlyAccess’ rồi nhấp vào ‘Tiếp theo’:
Bước 4. Tại đây, nhập tên cho vai trò: ‘EC2S3Access’ và mô tả tùy chọn cho vai trò đó. Lưu ý rằng chính sách tin cậy sẽ tự động được đính kèm với vai trò này:
Bước 5. Cuối cùng, nhấp vào nút ‘Create role’ để tạo vai trò ở trên:
Bước 1. Một lần nữa, hãy đến bảng điều khiển IAM từ tài khoản quản trị viên hoặc gốc và chọn ‘Chính sách’ và nhấp vào nút ‘Tạo chính sách’.
Bước 2. Trên trình hướng dẫn Tạo chính sách, nhấp vào tab json và chỉ cần dán mã json sau cho chính sách này:
Trong mã này, hãy thay thế ‘account_ID’ bằng số tài khoản hoặc ID của người dùng và ‘EC2S3Access’ bằng tên vai trò trong trường hợp của bạn. Nhấp vào ‘Tiếp theo: Thẻ’.
Bước 3. Chỉ định bất kỳ ‘Thẻ’ tùy chọn nào bạn muốn sử dụng và nhấp vào ‘Tiếp theo: Xem lại’:
Bước 4. Tại đây, hãy đặt tên cho chính sách này (‘iam_user_policy’ trong trường hợp của chúng tôi) và cuối cùng, nhấp vào nút ‘Tạo chính sách’ để tạo chính sách này:
Bước 5. Đính kèm chính sách đã tạo ở trên vào người dùng IAM:
Lưu ý: Có thể đính kèm vai trò vào phiên bản khi khởi chạy phiên bản đó và vào phiên bản đang chạy.
Trong trường hợp của chúng tôi, phiên bản EC2 đã chạy, vì vậy hãy điều hướng đến bảng điều khiển EC2 và chọn phiên bản mục tiêu. Chọn ‘Hành động > Bảo mật > Sửa đổi vai trò IAM’. Chọn tùy chọn ‘EC2S3Access’ từ menu thả xuống trên trang mới và nhấp vào ‘Lưu’ để tiếp tục:
$ aws s3 ls
Để xác minh chéo xem quyền Passrole có hoạt động hay không, hãy chạy cùng một lệnh từ cùng một người dùng IAM được cấu hình trên một máy khác. Lần này, hy vọng bạn sẽ thấy rằng chúng tôi đang gặp lỗi về khả năng truy cập do quyền hạn hạn chế:
Lỗi trên xảy ra vì chúng tôi chỉ cấp quyền truy cập của S3 cho phiên bản EC2 được cấu hình với ‘iam_user_policy’ nhưng không cấp bất kỳ quyền nào như vậy cho bất kỳ dịch vụ AWS nào khác của người dùng IAM.
Lưu ý: Không thể truy cập công khai thùng và các đối tượng của nó.
Kết luận
Trong hướng dẫn này, chúng tôi đã tìm hiểu cách sử dụng quyền PassRole để cấp quyền tối thiểu cho người dùng AWS IAM. Chúng tôi đã chỉ cho bạn cách kết nối phiên bản EC2 với thùng S3.
Trong hướng dẫn này, chúng tôi sẽ tập trung cụ thể vào các vai trò IAM. Danh tính IAM này giống như người dùng IAM ở chỗ chúng ta có thể đính kèm các chính sách IAM vào danh tính đó. Các chính sách này xác định phạm vi cấp quyền cho danh tính này. Không giống như người dùng IAM được liên kết với một người dùng duy nhất và có thông tin xác thực dài hạn, các vai trò tuân theo một chiến lược khác. Chúng có thông tin xác thực bảo mật tạm thời và được những người khác cần chúng đảm nhận/tiếp nhận. Người dùng, ứng dụng hoặc dịch vụ thông thường không có quyền truy cập vào tài nguyên AWS của bạn sẽ đảm nhận các vai trò để có quyền truy cập này.
Chúng ta sẽ thấy gì ở đây?
Trong hướng dẫn này, bạn sẽ tìm hiểu cách sử dụng quyền 'IAM Passrole'. Chúng tôi cũng sẽ trình bày một ví dụ đơn giản về cách kết nối một phiên bản EC2 với một thùng S3 riêng tư bằng khái niệm này.Quyền Passrole là gì?
Trong khi cấu hình nhiều dịch vụ AWS, người dùng/quản trị viên được yêu cầu chuyển một vai trò cho dịch vụ đó. Sau đó, dịch vụ sẽ đảm nhận vai trò đó để thực hiện các hành động được phép trong vai trò đó. Trong hầu hết các trường hợp, vai trò chỉ được chuyển cho dịch vụ tại một thời điểm trong khi thiết lập dịch vụ chứ không phải mọi lúc vai trò đều được dịch vụ đảm nhận.Người dùng phải có quyền chuyển một vai trò cho một dịch vụ. Đây là một khía cạnh bảo mật mạnh mẽ vì chỉ những người dùng được ủy quyền mới được phép chuyển một vai trò cho dịch vụ. Hơn nữa, người quản trị có thể kiểm soát loại vai trò mà người dùng có thể chuyển cho dịch vụ.
Trình diễn quyền Passrole
Chúng ta hãy chuyển sang khái niệm này bằng cách lấy một ví dụ thực tế. Trong phần trình diễn này, chúng ta có một thùng S3, một phiên bản EC2 và một ứng dụng đang chạy trên phiên bản này, chính là AWS CLI. Chúng ta muốn định cấu hình một vai trò cho phép ứng dụng của chúng ta đang chạy trên phiên bản EC2 truy cập vào thùng S3 của chúng ta. Chúng ta cần tạo vai trò theo cách mà chỉ EC2 mới có quyền truy cập vào S3 nhưng không phải bất kỳ dịch vụ AWS nào khác của người dùng. Để làm được điều này, ứng dụng của chúng ta phải có thông tin xác thực tạm thời để xác thực và ủy quyền để truy cập vào S3. Bạn sẽ nhận thấy rằng khi khởi chạy phiên bản EC2, chúng ta được yêu cầu chọn một vai trò IAM, chính vai trò này cung cấp các thông tin xác thực tạm thời này cho phiên bản EC2 của chúng ta. Ứng dụng của chúng tôi chạy trên phiên bản EC2 sẽ truy xuất các thông tin xác thực này để truy cập vào thùng S3.Người dùng IAM có thể chuyển một vai trò cho dịch vụ EC2, tại thời điểm khởi chạy phiên bản, bằng cách sử dụng ba thực thể bên dưới:
- Đầu tiên, chúng ta cần tạo và đính kèm một chính sách vào vai trò của mình để quyết định ranh giới quyền hoặc phạm vi của vai trò IAM.
- Tiếp theo, một chính sách tin cậy liên kết với vai trò này về cơ bản sẽ cho phép dịch vụ AWS (EC2 trong trường hợp của chúng ta) đảm nhận/tiếp nhận vai trò và sử dụng các quyền được liệt kê với vai trò.
- Cuối cùng, một chính sách cấp quyền IAM được đính kèm với người dùng IAM cho phép người dùng này chuyển các vai trò mà người dùng này được phép chuyển.
Tạo vai trò
Trong phần này, chúng ta sẽ tạo một vai trò có tên là ‘EC2S3Access’ và đính kèm một Chính sách ‘AmazonS3ReadOnlyAccess’ cho chính sách này:Bước 1. Đi đến bảng điều khiển IAM từ tài khoản quản trị viên hoặc gốc và chọn ‘Vai trò’ trong tùy chọn Quản lý quyền truy cập. Nhấp vào nút ‘Tạo vai trò’.
Bước 2. Trong phần ‘Chọn thực thể đáng tin cậy’, bạn sẽ thấy tùy chọn ‘Loại thực thể đáng tin cậy’ và ‘Trường hợp sử dụng’. Đối với mục trước, hãy chọn tùy chọn ‘Dịch vụ AWS’ và đối với mục sau, hãy chọn tùy chọn ‘EC2’.
Bước 3. Trong phần tiếp theo ‘Thêm quyền’, chúng tôi sẽ đính kèm chính sách ‘S3ReadOnlyAccess’ rồi nhấp vào ‘Tiếp theo’:
Bước 4. Tại đây, nhập tên cho vai trò: ‘EC2S3Access’ và mô tả tùy chọn cho vai trò đó. Lưu ý rằng chính sách tin cậy sẽ tự động được đính kèm với vai trò này:
Mã:
{ "Phiên bản": "17-10-2012", "Câu lệnh": [ { "Hiệu ứng": "Cho phép", "Hành động": [ "sts:AssumeRole" ], "Chính": { "Dịch vụ": [ "ec2.amazonaws.com" ] } } ]}
Thêm chính sách IAM cho người dùng IAM
Cho đến nay, chúng ta đã tạo một vai trò và đính kèm một chính sách vào đó, sau đó chúng ta cũng có một chính sách đáng tin cậy. Bây giờ, chúng ta sẽ tạo một chính sách cho chính người dùng IAM. Trong chính sách này, chúng tôi sẽ cấp cho người dùng quyền truy cập EC2 đầy đủ và cũng cấp quyền liên kết vai trò ‘EC2S3Access’ ở trên với phiên bản EC2 của chúng tôi.Bước 1. Một lần nữa, hãy đến bảng điều khiển IAM từ tài khoản quản trị viên hoặc gốc và chọn ‘Chính sách’ và nhấp vào nút ‘Tạo chính sách’.
Bước 2. Trên trình hướng dẫn Tạo chính sách, nhấp vào tab json và chỉ cần dán mã json sau cho chính sách này:
Mã:
{ "Phiên bản": "17-10-2012", "Câu lệnh": [{ "Hiệu ứng":"Cho phép", "Hành động":["ec2:*"], "Tài nguyên":"*" }, { "Hiệu ứng":"Cho phép", "Hành động":"iam:PassRole", "Tài nguyên":"arn:aws:iam::account_ID:role/EC2S3Access" }]}
Bước 3. Chỉ định bất kỳ ‘Thẻ’ tùy chọn nào bạn muốn sử dụng và nhấp vào ‘Tiếp theo: Xem lại’:
Bước 4. Tại đây, hãy đặt tên cho chính sách này (‘iam_user_policy’ trong trường hợp của chúng tôi) và cuối cùng, nhấp vào nút ‘Tạo chính sách’ để tạo chính sách này:
Bước 5. Đính kèm chính sách đã tạo ở trên vào người dùng IAM:
Đính kèm vai trò vào phiên bản
Vì vai trò của chúng tôi đã sẵn sàng và người dùng IAM được đính kèm chính sách bắt buộc, nên là thời điểm để đính kèm vai trò này (‘EC2S3Access’) vào phiên bản EC2.Lưu ý: Có thể đính kèm vai trò vào phiên bản khi khởi chạy phiên bản đó và vào phiên bản đang chạy.
Trong trường hợp của chúng tôi, phiên bản EC2 đã chạy, vì vậy hãy điều hướng đến bảng điều khiển EC2 và chọn phiên bản mục tiêu. Chọn ‘Hành động > Bảo mật > Sửa đổi vai trò IAM’. Chọn tùy chọn ‘EC2S3Access’ từ menu thả xuống trên trang mới và nhấp vào ‘Lưu’ để tiếp tục:
Kiểm tra Thiết lập
Nếu mọi thứ đã được thiết lập chính xác, phiên bản EC2 của chúng tôi sẽ có thể truy cập vào thùng S3. Trước tiên, hãy tạo một thùng S3 từ tài khoản quản trị viên. Tiếp theo, hãy đăng nhập vào phiên bản EC2 mục tiêu, sau đó cài đặt và cấu hình ứng dụng aws cli cho người dùng IAM bằng ‘user-iam-policy’. Từ một thiết bị đầu cuối trên phiên bản, hãy thực hiện lệnh liệt kê S3 bên dưới:$ aws s3 ls
Để xác minh chéo xem quyền Passrole có hoạt động hay không, hãy chạy cùng một lệnh từ cùng một người dùng IAM được cấu hình trên một máy khác. Lần này, hy vọng bạn sẽ thấy rằng chúng tôi đang gặp lỗi về khả năng truy cập do quyền hạn hạn chế:
Lỗi trên xảy ra vì chúng tôi chỉ cấp quyền truy cập của S3 cho phiên bản EC2 được cấu hình với ‘iam_user_policy’ nhưng không cấp bất kỳ quyền nào như vậy cho bất kỳ dịch vụ AWS nào khác của người dùng IAM.
Lưu ý: Không thể truy cập công khai thùng và các đối tượng của nó.
Kết luận
Trong hướng dẫn này, chúng tôi đã tìm hiểu cách sử dụng quyền PassRole để cấp quyền tối thiểu cho người dùng AWS IAM. Chúng tôi đã chỉ cho bạn cách kết nối phiên bản EC2 với thùng S3.