Accessing Secrets Using Cross Account Role between Two AWS Accounts.

--

Introduction :-

In the world of cloud computing, managing secrets across different #AWS accounts can be a challenging task. However, by using cross-account roles, we can simplify this process and enhance security. This blog post will guide you through the steps of accessing secrets using a cross-account role, providing a secure and efficient method for managing sensitive information across multiple #AWS accounts.

Prerequisites :-

Before we dive into the procedure, make sure you have the following:

  • Two AWS account’s with the necessary permissions
  • #AWS CLI installed and configured
  • Basic understanding of #AWS Identity and Access Management (IAM)
  • Familiarity with #AWS Secrets Manager

Tip: If you’re new to AWS, consider reviewing the AWS documentation on IAM and Secrets Manager before proceeding.

Procedure :-

Step 1: Create a cross-account role in Account-B

  • Log in to the #AWS Management Console of the Account-B.
  • Navigate to the #IAM dashboard.
  • Click on “Roles” in the left sidebar, then “Create role”.
  • Choose “Custom trust policy” as the trusted entity type.
  • Add the below policy into the custom trust policy.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AWS_Account-A_id:root"
},
"Action": "sts:AssumeRole"
}
]
}
  • Click on next and add the “SecretsManagerReadWrite” permissions policy.
  • Review and create the role, noting down the ARN of the new role.

Step-2:- Create #Kms key in the Account-A

  • Login to the #Aws Account-A and navigate to the key Management service.
  • Go to the customer managed keys and click on create a key.
  • choose the key type as symmetric and usage as encrypt & decrypt.
  • click on next and give an alias to the key, click on next.
  • select the administrator for the key and add the below key policy into the key.
    {
"Sid": "Allow account administrators to manage the KMS key",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::${Account-A-id}:root"
},
"Action": [
"kms:*"
],
"Resource": "arn:aws:kms:${region}:${Account-A-id}:key/Your-KMS-Key-ID"
},
{
"Sid": "Enable cross account log decryption",
"Effect": "Allow",
"Action": "kms:Decrypt",
"Principal": {
"AWS": "arn:aws:iam::${Account-B-id}:role/cross-account-role-name"
},
"Resource": "arn:aws:kms:${region}:${Account-A-id}:key/Your-KMS-Key-ID",
"Condition": {
"StringEquals": {
"kms:ViaService": "secretsmanager.ca-central-1.amazonaws.com"
},
"StringLike": {
"kms:EncryptionContext:SecretARN": "arn:aws:secretsmanager:${region}:${Account-A-id}:secret:YOUR_SECRET_NAME"
}
}
}

Step-3:- Create Secret in the Account-A

  • Login to the #Aws Account-A and navigate to the secrets manager.
  • Create a secret with the below resource permissions.
  • Add the secret-key and values into the secret.
{
"Version" : "2012-10-17",
"Statement" : [ {
"Effect" : "Allow",
"Principal" : {
"AWS" : "arn:aws:iam::ACCOUNT-B-ID:role/CROSS_ACCOUNT_ROLE_NAME"
},
"Action" : "secretsmanager:GetSecretValue",
"Resource" : "*"
} ]
}
  • Select the encryption key(#KMS key) in which u have been created in step-1.

Step 4: Assume the cross-account role

Open a command prompt window and configure your #AWS account-2 credentials(Access Keys). Using the #AWS CLI, assume the cross-account role:

aws sts assume-role --role-arn arn:aws:iam::AWS_ACCOUNT_2_ID:role/ROLE_NAME --role-session-name MySession

This command will return temporary security credentials.

Step 5: Configure #AWS CLI with temporary credentials

Set the following environment variables with the values from the previous step:

export AWS_ACCESS_KEY_ID=<AccessKeyId>
export AWS_SECRET_ACCESS_KEY=<SecretAccessKey>
export AWS_SESSION_TOKEN=<SessionToken>

Step 6: Access the secrets

Now you can use the #AWS CLI or SDK to access secrets in the other account:

aws secretsmanager get-secret-value --secret-id MySecret

Conclusion :-

Accessing secrets using a cross-account role provides a secure and manageable way to share sensitive information across #AWS accounts. By following this procedure, you can maintain the principle of least privilege while still allowing necessary access to secrets. Remember to regularly review and update your #IAM policies and roles to ensure ongoing security of your #AWS environment.

--

--

Mahira Technology- Innovate. Transform. Thrive.

A leading tech consulting firm specializing in innovative solutions. Experts in cloud, DevOps, automation, data analytics & more. Trusted technology partner.