UiPath Documentation
automation-suite
2.2510
true
Automation Suite on EKS/AKS installation guide

Configuring AWS Secrets Manager as a secretstore

Configure AWS Secrets Manager as a secretstore using Node IAM Role or Access Keys on EKS/AKS.

You can configure AWS Secrets Manager as a secretstore using either of the following auth methods:

  • Node IAM Role - uses the IAM role attached to the EC2 instance where the ESO pod runs
  • Access Keys (Static Credentials)

AWS Secrets Manager stores secrets as key-value pairs or plaintext strings.

By default, all sensitive data is defined in input.json. You can separate this data into two parts:

  • input.json - contains only configuration data.
  • AWS Secrets Manager - stores credentials securely.
Note:

You cannot store certificate paths or certificate-related credentials as part of the secretstore.

Using Node IAM Role​

The pod inherits permissions from the node's instance profile via the default AWS credential chain. No Kubernetes secret or additional configuration is needed.

Prerequisites​

  • IAM role attached to the EKS/EC2 node with secretsmanager:GetSecretValue and secretsmanager:ListSecrets permissions
  • IAM role assigned to the instance profile of the nodes running the ESO pod

Configuring input.json​

To configure AWS Secrets Manager as a secretstore using Node IAM Role, add the following section to input.json:

{
  "secret_store": {
    "enabled": true,
    "provider_configs": [
      {
        "name": "aws-prod",
        "type": "aws",
        "aws_kv": {
          "region": "us-east-1"
        }
      }
    ]
  }
}
{
  "secret_store": {
    "enabled": true,
    "provider_configs": [
      {
        "name": "aws-prod",
        "type": "aws",
        "aws_kv": {
          "region": "us-east-1"
        }
      }
    ]
  }
}

Configuring the required IAM policy​

  1. Create the IAM policy using the following definition:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": ["secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret"],
          "Resource": "arn:aws:secretsmanager:<region>:<account-id>:secret:*"
        },
        {
          "Effect": "Allow",
          "Action": ["secretsmanager:ListSecrets"],
          "Resource": "*"
        }
      ]
    }
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": ["secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret"],
          "Resource": "arn:aws:secretsmanager:<region>:<account-id>:secret:*"
        },
        {
          "Effect": "Allow",
          "Action": ["secretsmanager:ListSecrets"],
          "Resource": "*"
        }
      ]
    }
    
  2. Run the following command to create the policy:

    aws iam create-policy \
        --policy-name ESOSecretsManagerPolicy \
        --policy-document file://secrets-manager-policy.json
    aws iam create-policy \
        --policy-name ESOSecretsManagerPolicy \
        --policy-document file://secrets-manager-policy.json
    
  3. Attach the policy to the IAM role associated with the node instance profile:

    aws iam attach-role-policy \
        --role-name <your-role-attached-to-node> \
        --policy-arn arn:aws:iam::<your-account-id>:policy/ESOSecretsManagerPolicy
    aws iam attach-role-policy \
        --role-name <your-role-attached-to-node> \
        --policy-arn arn:aws:iam::<your-account-id>:policy/ESOSecretsManagerPolicy
    

Using Access Keys​

Access Keys uses explicit AWS access key ID and secret access key stored in a Kubernetes secret. This method is suitable for non-EKS environments or when node IAM roles are not available.

Prerequisites​

  • AWS IAM user with secretsmanager:GetSecretValue permissions
  • Kubernetes secret pre-created with access key credentials

Configuring input.json​

To configure AWS Secrets Manager as a secretstore using Access Keys, take the following steps:

  1. Create the Kubernetes secret that stores the AWS credentials:

    kubectl create secret generic aws-credentials \
      --namespace uipath \
      --from-literal=access-key-id=<your-access-key-id> \
      --from-literal=secret-access-key=<your-secret-access-key>
    kubectl create secret generic aws-credentials \
      --namespace uipath \
      --from-literal=access-key-id=<your-access-key-id> \
      --from-literal=secret-access-key=<your-secret-access-key>
    

    The secret must contain the following keys:

    • access-key-id - AWS Access Key ID
    • secret-access-key - AWS Secret Access Key
  2. Add the following section to input.json:

    {
      "secret_store": {
        "enabled": true,
        "provider_configs": [
          {
            "name": "aws-prod",
            "type": "aws",
            "credentials_secret_name": "aws-credentials",
            "aws_kv": {
              "region": "us-east-1"
            }
          }
        ]
      }
    }
    {
      "secret_store": {
        "enabled": true,
        "provider_configs": [
          {
            "name": "aws-prod",
            "type": "aws",
            "credentials_secret_name": "aws-credentials",
            "aws_kv": {
              "region": "us-east-1"
            }
          }
        ]
      }
    }
    

Configuration fields​

The following table describes the available configuration fields.

FieldRequiredDescription
aws_kv.regionYesAWS region where secrets are stored (for example, us-east-1)
credentials_secret_nameNoKubernetes secret containing access key credentials. If not set, the node IAM role is used.

Referencing secrets in input.json​

To reference a credential stored in AWS Secrets Manager, use one of the following formats in input.json:

  • Plain string: vault/aws-prod/secret-name
  • JSON property extraction: vault/aws-prod/secret-name?key=password

Using AWS GovCloud​

If you are using AWS GovCloud, set the region field to an AWS GovCloud region (for example, us-gov-west-1 or us-gov-east-1). No other configuration changes are required - the region value determines the AWS partition and endpoints used.

{
  "secret_store": {
    "enabled": true,
    "provider_configs": [
      {
        "name": "aws-gov",
        "type": "aws",
        "credentials_secret_name": "aws-credentials",
        "aws_kv": {
          "region": "us-gov-west-1"
        }
      }
    ]
  }
}
{
  "secret_store": {
    "enabled": true,
    "provider_configs": [
      {
        "name": "aws-gov",
        "type": "aws",
        "credentials_secret_name": "aws-credentials",
        "aws_kv": {
          "region": "us-gov-west-1"
        }
      }
    ]
  }
}

Was this page helpful?

Connect

Need help? Support

Want to learn? UiPath Academy

Have questions? UiPath Forum

Stay updated