Automate access to S3 buckets for Percona Backup for MongoDB¶
When you run MongoDB and Percona Backup for MongoDB using AWS resources (on EC2 instances or using EKS), you can automate access to AWS S3 buckets for Percona Backup for MongoDB. Percona Backup for MongoDB uses the AWS environment variables and metadata to access S3 buckets so that you don’t have to explicitly specify the S3 credentials in the PBM configuration file. Thereby you control the access to your cloud infrastructure from a single place.
IAM instance profile¶
Version added: 1.6.0
IAM (Identity Access Management) is the AWS service that allows you to securely control access to AWS resources.
Using the IAM instance profile, you can automate access to S3 buckets for Percona Backup for MongoDB running on EC2 instance. The steps are the following:
Create the IAM instance profile and the permission policy within where you specify the access level that grants the access to S3 buckets.
Attach the IAM profile to an EC2 instance.
Configure an S3 storage bucket and verify the connection from the EC2 instance to it.
Provide the remote storage information for PBM in a config file. Leave the
storage: type: s3 s3: region: <your-S3-region> bucket: <bucket-name>
If you specify S3 credentials, they override the EC2 instance environment variables and metadata, and are used for authentication instead.
AWS documentation: How can I grant my Amazon EC2 instance access to an Amazon S3 bucket?
IAM Roles for Service Accounts (IRSA)¶
Version added: 2.0.3
IRSA is the native way for AWS EKS (Amazon Elastic Kubernetes Service) to allow applications running in EKS pods to access the AWS API using permissions configured in AWS IAM roles.
To benefit from using the AWS IRSA credentials with PBM, the high-level steps are the following:
- Create a cluster with
eksctland OIDC provider setup enabled. This feature works with EKS clusters version 1.13 and above.
- Create an IAM role and specify the policy that defines the access to an S3 bucket.
- Create a service account and annotate it with the IAM role.
- Configure your pod by using the service account created in the previous step and assume the IAM role.
- Provide the remote storage information for PBM in a config file. Leave the
s3.credentialsarray empty, since PBM uses the
AWS_WEB_IDENTITY_TOKEN_FILEenvironment variables which are either automatically provided (i.e. injected by Kubernetes mutating admission controller in EKS) or which you can define manually (if you don’t want to the admission controller to modify your pods)
If IRSA-related credentials are defined, they have the priority over any IAM instance profile. However, if you intentionally specify S3 credentials in PBM configuration file, they override any IRSA/IAM instance profile related credentials and are used for authentication instead.
For free technical help, visit the Percona Community Forum.
To report bugs or submit feature requests, open a JIRA ticket.
For paid support and managed or consulting services , contact Percona Sales.
Created: March 23, 2023