1) Overview
Sau khi coi video của 1 bạn hướng dẫn về Assume role
==>mình hiểu là assume role nghĩa là bạn A có quền đi vào các Con EC2 thuộc tài khoản của bạn A với ID là 1. và Nim có 1 tại khỏa AWS có ID là 2
==> giờ bạn muốn Nim có thể access vào Con EC2 trong tài khoản A có ID là 1
==> thì bạn cấp cho Nim 1 thẻ là Assume Role A và ghi rằng tài khoản Nim Được access EC2 của tài khoản A
==> Nếu tài khoản của Nim có quyền Assume Role sau đó mình sử dụng tài khoản Nim có ID 2 swich role sang Tài khoản A thì mình sẽ access được Ec2 thuộc tài khoản A
==> Đương nhiên là mình sẽ ko cần bạn tạo cho mình 1 user IAM thuộc Tài khoản có ID 1
Sẽ khá khó hiểu, bạn làm theo video ở bài post bên dưới là hiểu ngày
Sau đây là phần thược hành
2) demo
2.1) Create Policy and config assume role in this Policy
Đầu tiền chúng ta cần tạo Policy
bạn add 1 permission assume role cho policy
Vì là mình muốn trao quền truy cập vào SSM thông qua assume role nên mình add thêm permission để target vào System Manager
2.2) Create Role
create role
Giờ mình tạo 1 User và mình chỉ muôn user này đọc Parameter /dev*
# Create IAM User aws iam create-user --user-name readonly_ssm # Set password for readonly_ssm user aws iam create-login-profile --user-name readonly_ssm --password @SSMUserReadOnly --no-password-reset-required
Lúc đầu user này chưa được add 1 permission nào cả nên sẽ bị lỗi khi switch user hay truy cập vào assume role.
{"level":"error","ts":1662010378.2905967,"logger":"controllers.SecretStore","msg":"unable to validate store","secretstore":"external-secrets/secretstore-sample","error":"could not validate provider: AccessDenied: User: arn:aws:iam::250887682577:user/readonly_ssm is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::250887682577:role/SSMAssumeRole\n\tstatus code: 403, request id: 28df3e5a-4d71-44bd-bd93-0a4b173c1139","stacktrace":"github.com/external-secrets/external-secrets/pkg/controllers/secretstore.(*StoreReconciler).Reconcile\n\t/home/runner/work/external-secrets/external-secrets/pkg/controllers/secretstore/secretstore_controller.go:55\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Reconcile\n\t/home/runner/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.11.2/pkg/internal/controller/controller.go:114\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\t/home/runner/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.11.2/pkg/internal/controller/controller.go:311\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\t/home/runner/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.11.2/pkg/internal/controller/controller.go:266\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2\n\t/home/runner/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.11.2/pkg/internal/controller/controller.go:227"}
2.3) Create Policy have permission “Assume Role”
vậy chúng ta cấp quyên assume role để ông có thể thao tác