Creare un ruolo IAM e un segreto AWS
Puoi configurare i pod Kubernetes in modo che accedano alle risorse AWS autenticandosi come ruolo AWS IAM invece di fornire credenziali AWS esplicite.
|
|
Per eseguire l'autenticazione usando un ruolo AWS IAM, devi disporre di un cluster Kubernetes implementato utilizzando EKS. |
Crea un segreto per AWS Secret Manager
Questo esempio crea un segreto per il manager segreto AWS per memorizzare le credenziali Trident CSI:
aws secretsmanager create-secret --name trident-secret --description "Trident CSI credentials"\
--secret-string "{\"username\":\"vsadmin\",\"password\":\"<svmpassword>\"}"
Crea criterio IAM
I seguenti esempi creano una policy IAM utilizzando l'interfaccia a riga di comando di AWS:
aws iam create-policy --policy-name AmazonFSxNCSIDriverPolicy --policy-document file://policy.json --description "This policy grants access to Trident CSI to FSxN and Secret manager"
Policy JSON file:
policy.json:
{
"Statement": [
{
"Action": [
"fsx:DescribeFileSystems",
"fsx:DescribeVolumes",
"fsx:CreateVolume",
"fsx:RestoreVolumeFromSnapshot",
"fsx:DescribeStorageVirtualMachines",
"fsx:UntagResource",
"fsx:UpdateVolume",
"fsx:TagResource",
"fsx:DeleteVolume"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Action": "secretsmanager:GetSecretValue",
"Effect": "Allow",
"Resource": "arn:aws:secretsmanager:<aws-region>:<aws-account-id>:secret:<aws-secret-manager-name>*"
}
],
"Version": "2012-10-17"
}
Creare un ruolo IAM per l'account del servizio
aws iam create-role --role-name trident-controller \ --assume-role-policy-document file://trust-relationship.json
file trust-relation.json:
{
"Version": "2012-10-17",
"Statement": [
{ "Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::<account_id>:oidc-provider/<oidc_provider>"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"<oidc_provider>:aud": "sts.amazonaws.com",
"<oidc_provider>:sub": "system:serviceaccount:trident:trident-controller"
}
}
}
]
}
Aggiornare i seguenti valori nel trust-relationship.json file:
-
<account_id> - il tuo ID account AWS
-
<oidc_provider> - l'OIDC del tuo cluster EKS. È possibile ottenere oidc_provider eseguendo:
aws eks describe-cluster --name my-cluster --query "cluster.identity.oidc.issuer"\ --output text | sed -e "s/^https:\/\///"
Associare il ruolo IAM alla policy IAM:
Una volta creato il ruolo, allegare il criterio (creato nel passaggio precedente) al ruolo utilizzando questo comando:
aws iam attach-role-policy --role-name my-role --policy-arn <IAM policy ARN>
Verificare che il provider OICD sia associato:
Verifica che il tuo provider OIDC sia associato al cluster. È possibile verificarlo utilizzando il seguente comando:
aws iam list-open-id-connect-providers | grep $oidc_id | cut -d "/" -f4
Utilizzare il seguente comando per associare IAM OIDC al cluster:
eksctl utils associate-iam-oidc-provider --cluster $cluster_name --approve
Nell'esempio seguente viene creato un ruolo IAM per l'account di servizio in EKS:
eksctl create iamserviceaccount --name trident-controller --namespace trident \ --cluster <my-cluster> --role-name <AmazonEKS_FSxN_CSI_DriverRole> --role-only \ --attach-policy-arn <IAM-Policy ARN> --approve