Cách Sử Dụng AWS CodeCommit Sau Khi Switch Role Chuyên mục Devops 2024-11-20 1 Lượt xem 1 Lượt thích 0 Bình luận
Trong môi trường làm việc với nhiều tài khoản AWS, việc sử dụng AWS Switch Role là cách phổ biến và an toàn để quản lý quyền truy cập vào các dịch vụ AWS giữa các tài khoản khác nhau. Một trong những tình huống phổ biến là cần clone hoặc làm việc với AWS CodeCommit trong tài khoản đích sau khi đã Switch Role từ một tài khoản nguồn.
Bài viết này sẽ hướng dẫn chi tiết cách thực hiện điều này từ đầu đến cuối, bao gồm cả cách tự động và thủ công để bạn dễ dàng lựa chọn.
1. Tại sao phải sử dụng Switch Role?
Switch Role cho phép bạn truy cập các tài nguyên từ tài khoản AWS khác mà không cần phải tạo người dùng mới hoặc chia sẻ quyền truy cập trực tiếp giữa các tài khoản. Điều này giúp duy trì bảo mật tốt hơn trong các môi trường đa tài khoản. Khi bạn muốn làm việc với AWS CodeCommit trong một tài khoản khác sau khi đã Switch Role, bạn cần thực hiện một số bước cấu hình để Git có thể hiểu và sử dụng đúng tài khoản đích.
2. Cấu hình Switch Role và AWS CLI
Bước 1: Cấu hình thông tin tài khoản nguồn
Trước tiên, bạn cần cấu hình thông tin tài khoản nguồn của mình vào file credentials và config của AWS CLI.
Mở file ~/.aws/credentials và thêm tài khoản nguồn của bạn:
[origin_account]
aws_access_key_id = <ACCESS_KEY_ID>
aws_secret_access_key = <SECRET_ACCESS_KEY>
Sau đó, trong file ~/.aws/config, bạn cần thiết lập cấu hình Switch Role:
[profile target_account]
role_arn = arn:aws:iam::<TARGET_ACCOUNT_ID>:role/<ROLE_NAME>
source_profile = origin_account
region = ap-northeast-1
- role_arn: ARN của role mà bạn muốn assume (Switch Role) trong tài khoản đích.
- source_profile: Chỉ tới tài khoản nguồn (origin_account) đã được cấu hình trong file credentials.
Bước 2: Cấu hình Git để sử dụng với CodeCommit
Để Git có thể sử dụng đúng profile sau khi Switch Role, bạn cần cấu hình Git để sử dụng AWS CodeCommit credential helper.
Chạy các lệnh sau:
git config --global credential.helper '!aws codecommit credential-helper --profile target_account $@'
git config --global credential.useHttpPath true
- --profile target_account: Chỉ định rằng Git nên sử dụng profile của tài khoản đích (target_account) đã được cấu hình ở bước trước.
3. Kiểm tra Switch Role
Trước khi clone repository từ AWS CodeCommit, bạn cần chắc chắn rằng bạn đã assume role thành công vào tài khoản đích. Để kiểm tra, bạn có thể chạy lệnh:
aws sts get-caller-identity --profile target_account
Nếu lệnh này trả về thông tin về tài khoản đích mà bạn đang Switch Role, bạn đã thiết lập thành công. Ngoài ra, bạn cũng có thể kiểm tra danh sách repository trong CodeCommit của tài khoản đích:
aws codecommit list-repositories --profile target_account
Nếu bạn thấy danh sách các repository của tài khoản đích, bạn có thể chuyển sang bước tiếp theo.
4. Clone repository từ AWS CodeCommit
Sau khi đã hoàn tất cấu hình, bạn có thể clone repository từ AWS CodeCommit trong tài khoản đích mà không cần nhập username/password. Ví dụ:
git clone https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/<repository_name>
Nhờ cấu hình ở các bước trước, Git sẽ tự động sử dụng AWS CodeCommit Credential Helper và profile target_account để lấy thông tin xác thực.
5. Cách thủ công: Sử dụng aws sts assume-role
Nếu bạn gặp khó khăn với việc cấu hình tự động hoặc muốn trực tiếp kiểm soát quá trình Switch Role, bạn có thể sử dụng phương pháp thủ công bằng cách chạy lệnh aws sts assume-role.
Bước 1: Thực hiện Switch Role thủ công
Chạy lệnh dưới đây để assume role vào tài khoản đích:
aws sts assume-role \
--role-arn arn:aws:iam::<B_ACCOUNT_ID>:role/<ROLE_NAME> \
--role-session-name "CodeCommitSession"
Lệnh này sẽ trả về các thông tin cần thiết để bạn có thể tạm thời sử dụng tài khoản đích, bao gồm AccessKeyId, SecretAccessKey, và SessionToken.
Bước 2: Thiết lập tạm thời thông tin xác thực
Sau khi thực hiện lệnh trên, bạn cần export các giá trị vừa nhận được vào môi trường của bạn để Git có thể sử dụng chúng:
export AWS_ACCESS_KEY_ID=<AccessKeyId>
export AWS_SECRET_ACCESS_KEY=<SecretAccessKey>
export AWS_SESSION_TOKEN=<SessionToken>
Bước 3: Clone repository từ CodeCommit
Sau khi thiết lập xong các thông tin xác thực, bạn có thể clone repository từ AWS CodeCommit như bình thường:
git clone https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/<repository_name>
Lúc này, Git sẽ sử dụng đúng các thông tin đã được bạn thiết lập tạm thời để truy cập tài khoản đích.
Note: trong trường hợp hết hạn token
An error occurred (ExpiredToken) when calling the GetCallerIdentity operation: The security token included in the request is expired
Hãy unset Import config
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
unset AWS_SESSION_TOKEN
6. Các vấn đề thường gặp
Vấn đề 1: Git vẫn yêu cầu nhập user/password
Nếu bạn đã thực hiện đúng các bước trên nhưng Git vẫn yêu cầu nhập user/password, có thể do Git đang sử dụng credential helper không chính xác (như manager trên Windows). Để giải quyết:
-
Kiểm tra cấu hình Git của bạn:
git config -l --show-origin | grep credential
-
Đảm bảo rằng chỉ có dòng cấu hình liên quan đến AWS CodeCommit:
credential.helper=!aws codecommit credential-helper --profile target_account $@
Nếu thấy bất kỳ dòng nào như credential.helper=manager, hãy xóa nó:
git config --global --unset credential.helper
Vấn đề 2: 403 Forbidden khi clone repository
Lỗi này có thể xảy ra nếu quyền của role mà bạn Switch vào tài khoản đích không cho phép truy cập vào CodeCommit. Hãy kiểm tra rằng role bạn đang sử dụng có đủ quyền với CodeCommit, ví dụ:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codecommit:GitPull",
"codecommit:GitPush"
],
"Resource": "*"
}
]
}
7. Kết luận
Sử dụng AWS Switch Role để làm việc với AWS CodeCommit là một cách tiện lợi và an toàn khi bạn cần truy cập tài khoản AWS khác mà không phải chia sẻ quyền truy cập trực tiếp. Bạn có thể chọn phương pháp tự động thông qua cấu hình AWS CLI và Git, hoặc thực hiện thủ công với lệnh aws sts assume-role để linh hoạt hơn.
Cả hai phương pháp này đều đảm bảo tính bảo mật và giúp bạn quản lý tài nguyên AWS một cách hiệu quả mà không gặp rắc rối với việc nhập username/password.
Bài viết này cung cấp cả phương pháp tự động và thủ công để giúp bạn dễ dàng lựa chọn cách phù hợp với nhu cầu của mình khi làm việc với AWS CodeCommit sau khi Switch Role.
Chúc bạn thành công!
Bình luận (0)