Trustwave's 2024 Retail Report Series Highlights Alarming E-Commerce Threats and Growing Fraud Against Retailers. Learn More
Get access to immediate incident response assistance.
Get access to immediate incident response assistance.
Trustwave's 2024 Retail Report Series Highlights Alarming E-Commerce Threats and Growing Fraud Against Retailers. Learn More
When working with Amazon Web Services (AWS), we often find that various AWS services need to store and manage secrets. AWS Secrets Manager is the go-to solution for this. It's a centralized service designed to help manage sensitive information securely, significantly reduce the risk of credential compromise, and facilitate your credential management process. However, there's more to it than just storing secrets.
AWS secrets are keys used to authorize different AWS services. These secret keys can be database credentials, application credentials, OAuth tokens, API keys, and access/secret keys. To manage and periodically rotate/update these keys, we can integrate the Lambda function with AWS SecretsManager.
In many cases, AWS services create and manage their secrets. For example, managed secrets often come with built-in rotation. This means the secrets can be updated and rotated automatically without any manual configuration on your part. This automatic rotation is a huge advantage, as it helps maintain security best practices effortlessly. Some of AWS’s services that can create managed secrets are appflow, databrew, datasync, directconnect, ECS, events, marketplace-deployment, opsworks-cm, RDS, redshift, sqlworkbench.
The service that creates a managed secret also takes on the responsibility of managing it. This can include restrictions on how you interact with these secrets.
For instance, you might find that you cannot update or delete these secrets without going through a recovery period. While this might seem like a limitation, it's a safeguard. An example of a service that manages secrets is RDS. When creating your RDS target, you can choose to store database authentication directly to AWS SecretsManager. By directly storing these credentials, RDS will automatically store and manage the rotation of these credentials.
Integrating Lambda functions with AWS SecretsManager simplifies the process of credential rotation for AWS account owners by automating the task.
AWS SecretsManager offers secure storage and rotation of various secrets using Lambda functions. These secrets include:
For storing and rotating IAM credentials (access/secret key pair), we need to create a Lambda function to rotate these secrets. Here are the steps to manage these secrets:
1. Create a lambda function for AWS credential rotation
Begin by creating a function using any Lambda-supported language. The function will retrieve credentials from AWS SecretsManager, and generate a new key pair for the IAM user every 90 days as set in the console. Discard the old key pairs and update the IAM user details and secrets with the new key pair.
2. Create and configure AWS policies for the Lambda function created
For the Lambda function to access and create IAM credentials, it needs to have an IAM role attached to it with the proper permissions. An identity-based policy creates the role for the Lambda function.
This policy, when linked to a role and assigned to the Lambda function, authorizes the Lambda function to execute actions on AWS IAM and SecretsManager.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"secretsmanager:GetSecretValue",
"secretsmanager:PutSecretValue",
"iam:ListAccessKeys",
"iam:CreateAccessKey",
"iam:UpdateAccessKey",
"iam:DeleteAccessKey"
],
"Resource": "*"
}
]
}
Resource-based policies are attached to AWS services to provide a way to control access to other AWS services. In this case, the policy below enables AWS SecretsManager to trigger the created Lambda function on the rotation period set. The "lambda: InvokeFunction" action in the policy will allow AWS SecretsManager to invoke the selected Lambda function every 90 days in this case.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "secretsmanager.amazonaws.com"
},
"Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:us-east-2:ACCOUNT_ID:function:KeyRotator"
}
]
}
3. Add Secrets to AWS SecretsManager
Visit https://us-east-2.console.aws.amazon.com/secretsmanager/newsecret?region=us-east-2
Choose secret type 'Other type of secret'
Enter the secrets of the IAM user for whom you want the secret to be stored.
follows:
Finally, set up an automatic rotation by choosing the Lambda function you created above and setting the rotation period.
Storing and managing AWS credentials using AWS Secrets Manager and Lambda functions offers a comprehensive solution that enhances security, simplifies management, ensures compliance, improves operational efficiency, and leverages AWS’s reliable infrastructure. By automating the management of credentials and leveraging secure storage and access controls, you can significantly reduce the risk of credential compromise and streamline your credential management processes.
Trustwave is a globally recognized cybersecurity leader that reduces cyber risk and fortifies organizations against disruptive and damaging cyber threats. Our comprehensive offensive and defensive cybersecurity portfolio detects what others cannot, responds with greater speed and effectiveness, optimizes client investment, and improves security resilience. Learn more about us.
Copyright © 2024 Trustwave Holdings, Inc. All rights reserved.