-
Notifications
You must be signed in to change notification settings - Fork 97
Description
Describe why this change is needed
Currently, this project cannot assume different IAM roles based on the Issuer configuration. This limitation makes it challenging to use AWS PCA instances stored in multiple AWS accounts, as there is no built-in mechanism to define an assumable role per Issuer.
In multi-account setups, organizations may have AWS PCA instances residing in different AWS accounts while their Kubernetes clusters exist in a separate centralized account. However, since AWS PCA Issuers do not currently support assuming a role per Issuer, it is impossible to authenticate against different AWS accounts dynamically.
Allowing an Issuer to specify an IAM role to assume would enable seamless integration with AWS PCA across different accounts. This would be particularly useful for scenarios where:
- Each AWS PCA instance is hosted in a separate AWS account.
- The cluster account needs to authenticate against these AWS PCA instances dynamically.
- A specific role assumption strategy is required per Issuer.
Describe solutions and alternatives considered (optional)
Introduce an option in the Issuer configuration that allows specifying an IAM role to assume, similar to how native cert-manager supports role assumption.
This feature would align AWS PCA Cert Manager with other Kubernetes authentication patterns that leverage IAM role assumption. It would also improve security by following the principle of least privilege while enabling better multi-account AWS PCA management.
---
apiVersion: awspca.cert-manager.io/v1beta1
kind: AWSPCAClusterIssuer
metadata:
name: issuer-A
spec:
arn: awspca-account-A
role: role-account-A
---
apiVersion: awspca.cert-manager.io/v1beta1
kind: AWSPCAClusterIssuer
metadata:
name: issuer-B
spec:
arn: awspca-account-B
role: role-account-BWith this configuration, on the ClusterIssuer reconciliation it will assume a role based on the value of role.
cert-manager, external-secrets and external-dns do support assume role.
Is there anything else you would like to add?
I see that some test uses assume role but I can not find how to use it in production environment.