Cách kiểm tra thông tin đăng nhập cho Công cụ dòng lệnh AWS


149

Có một lệnh / tiểu ban có thể được chuyển đến awstiện ích có thể 1) xác minh rằng thông tin đăng nhập trong ~/.aws/credentialstệp là hợp lệ và 2) đưa ra một số dấu hiệu cho thấy người dùng thuộc về thông tin nào? Tôi đang tìm kiếm một cái gì đó chung chung mà không đưa ra bất kỳ giả định nào về việc người dùng có quyền đối với IAM hoặc bất kỳ dịch vụ cụ thể nào.

Trường hợp sử dụng cho việc này là kiểm tra độ tỉnh thời gian triển khai để đảm bảo rằng thông tin đăng nhập là tốt. Lý tưởng nhất là sẽ có một số cách để kiểm tra giá trị trả về và hủy bỏ việc triển khai nếu có thông tin không hợp lệ.


3
Tôi có thể đề nghị rằng điều này sẽ được hỏi tốt hơn tại serverfault.com ? Stack Overflow đặc biệt dành cho các câu hỏi lập trình.
Động học Tripp

4
@TrippKinetic Vâng, tôi đã ở trên hàng rào về nơi để hỏi. Trong tâm trí của tôi, phần cốt lõi của câu hỏi liên quan nhiều hơn đến việc lập trình truy vấn một API thay vì quản lý các máy chủ.
smitelli

Câu trả lời:


219

Sử dụng GetCallerIdentity :
aws sts get-caller-identity

Không giống như các lệnh gọi API / CLI khác, nó sẽ luôn hoạt động, bất kể các quyền IAM của bạn.

Bạn sẽ nhận được đầu ra ở định dạng sau:

{
    "Account": "123456789012", 
    "UserId": "AR#####:#####", 
    "Arn": "arn:aws:sts::123456789012:assumed-role/role-name/role-session-name"
}

Định dạng ARN chính xác sẽ phụ thuộc vào loại thông tin đăng nhập, nhưng thường bao gồm tên của người dùng (con người).

Nó sử dụng mã lỗi AWS CLI tiêu chuẩn cho 0 thành công và 255 nếu bạn không có thông tin xác thực.


5
Đây là một câu trả lời tuyệt vời, nhưng nếu bạn đang sử dụng MFA, hãy xem ra - nó phức tạp hơn. Với MFA, bạn cần sử dụng thông tin xác thực làm việc (i) kết hợp với mã thông báo MFA để nhận thông tin tạm thời làm việc khác nhau (ii) và với giải pháp này, bạn sẽ nhận được kết quả tương tự cho thông tin đăng nhập (i) hoặc (ii).
Mark Chackerian

3
@MarkChackerian Không phải lúc nào cũng như vậy. Tôi đã tạo một người dùng có MFA đang được thi hành bằng chính sách của Trek10 . Với mã thông báo phiên MFA không hoạt động, nếu tôi thực thi aws iam get-user --profile test-mfa, tôi nhận được : An error occurred (AccessDenied) when calling the GetUser operation. Tuy nhiên, các aws sts get-caller-identity --profile test-mfakết quả đầu ra (tương tự, không có mã thông báo phiên MFA hoạt động) test-mfaTài khoản, ARN và UserId.
Ville

54

Có một cách thẳng thắn - aws iam get-usersẽ cho biết chi tiết về bạn là ai (Người dùng IAM hiện tại) - miễn là người dùng có iamđặc quyền.

Có một số cuộc gọi CLI có --dry-runcờ hỗ trợ aws ec2 run-instancesmà bạn cho bạn biết liệu bạn có cấu hình / tín dụng cần thiết để thực hiện thao tác hay không.

Ngoài ra còn --auth-dry-runcó Kiểm tra xem bạn có quyền yêu cầu cho lệnh hay không mà không thực sự chạy lệnh. Nếu bạn có các quyền cần thiết, lệnh sẽ trả về DryRunOperation; mặt khác, nó trả về Un trái phép. [Từ Tài liệu AWS - Tùy chọn chung ]

Bạn sẽ có thể liệt kê các Khóa truy cập IAM từ Bảng điều khiển quản lý mà bạn có thể kiểm tra chéo để xem ai đã được chỉ định khóa nào.

Cách tốt nhất để hiểu người dùng / vai trò nào có đặc quyền gì là sử dụng Trình mô phỏng chính sách IAM .


16
Trớ trêu thay, người dùng tôi đã chạy thử nghiệm đã AccessDeniedgặp lỗi - bao gồm arn:aws:iam::123...890:user/somebodychuỗi đầy đủ như một phần của đầu ra lỗi.
smitelli

7
Hoàn toàn có thể người dùng không có quyền tự mình 'lấy người dùng'. : - /
Jason

Vâng, tôi có tình huống này. Trong Bảng điều khiển AWS bên cạnh ARN của người dùng, nó hiển thị N / A và di chuột qua giải thích rằng "Người dùng arn: aws: iam: ...: user / steve không được phép thực hiện iam: GetUser trên resource: user steve"
Steve Bennett
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.