{"id":15805,"date":"2023-12-19T10:44:46","date_gmt":"2023-12-19T05:14:46","guid":{"rendered":"https:\/\/opstree.com\/blog\/\/?p=15805"},"modified":"2023-12-19T10:46:19","modified_gmt":"2023-12-19T05:16:19","slug":"mastering-aws-rds-backups-navigating-encryption-challenges-with-aws-key-management-service-kms","status":"publish","type":"post","link":"https:\/\/opstree.com\/blog\/2023\/12\/19\/mastering-aws-rds-backups-navigating-encryption-challenges-with-aws-key-management-service-kms\/","title":{"rendered":"Mastering AWS RDS Backups: Navigating Encryption Challenges with AWS Key Management Service (KMS)"},"content":{"rendered":"\n<p class=\"has-text-align-justify\">In today&#8217;s cloud-centric landscape, businesses are increasingly adopting multi-account, multi-region AWS (Amazon Web Services) architectures for their applications. While this approach offers numerous benefits, it also introduces complex challenges when it comes to managing backups for Amazon RDS (Relational Database Service) instances across multiple accounts and regions. In this blog post, we will delve into these challenges and explore effective solutions for securing your RDS data.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"484\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/12\/screenshot-2023-12-18-183845.png?w=800\" alt=\"\" class=\"wp-image-16773\" \/><\/figure>\n\n\n\n<!--more-->\n\n\n\n<h1 class=\"wp-block-heading\">The Necessity of RDS Backups<\/h1>\n\n\n\n<p class=\"has-text-align-justify\">Before diving into the intricacies of cross-account and cross-region RDS backups, let&#8217;s remind ourselves why RDS backups are essential. These backups are instrumental in ensuring the availability, recoverability, and integrity of your database system. They play a pivotal role in various critical scenarios, including data recovery, high availability, disaster recovery, and point-in-time recovery.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">In this blog post, we&#8217;ll employ the AWS Backup service to handle RDS backups, as it offers robust support for various AWS services, with similar procedures applicable to other services.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Challenges<\/h1>\n\n\n\n<p>Let&#8217;s first address the key challenges you may encounter:<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Challenge 1: Encryption<\/h2>\n\n\n\n<p>In AWS, AWS Key Management Service (KMS) keys are used for encrypting services such as RDS. There are two types of keys: AWS-managed and user-managed. The KMS key used to encrypt your RDS determines the encryption of the resulting snapshot.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Solutions<\/h3>\n\n\n\n<p class=\"has-text-align-justify\">To tackle these challenges, we&#8217;ll discuss solutions tailored to each scenario.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Scenario 1: RDS Encrypted with Custom KMS Keys<\/h4>\n\n\n\n<p>If you&#8217;re using custom KMS keys, you&#8217;ll need to grant access to other accounts to use your KMS key. Achieve this by updating the policy of the custom KMS key.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n    \"Version\": \"2012-10-17\",\n    \"Id\": \"rds backup cutom kms key\",\n    \"Statement\": &#091;\n        {\n            \"Sid\": \"Allow access from Backup account to copy backups\",\n            \"Effect\": \"Allow\",\n            \"Principal\": {\n                \"AWS\": \"*\"\n            },\n            \"Action\": &#091;\n                \"kms:CreateGrant\",\n                \"kms:Decrypt\",\n                \"kms:GenerateDataKey*\",\n                \"kms:DescribeKey\"\n            ],\n            \"Resource\": \"*\",\n            \"Condition\": {\n                \"StringEquals\": {\n                    \"kms:CallerAccount\": \"&lt;your destination account id&gt;\"\n                }\n            }\n        },\n         \/\/ Additional permissions here\n    ]\n}\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Scenario 2: RDS Encrypted with AWS-Managed KMS Key<\/h4>\n\n\n\n<p>When your RDS is encrypted with an AWS-managed KMS key, you lack the permission to update its policies, hindering access for other accounts. To address this, change the KMS key of the snapshot to a custom-managed KMS key. Here&#8217;s how<\/p>\n\n\n\n<p>Create a copy of the original snapshot within the same account and region. This new snapshot will be encrypted using the AWS Backup vault&#8217;s KMS key, which can be custom-managed.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Execution<\/h3>\n\n\n\n<p>We&#8217;ve decided to utilize the AWS Backup service for RDS backup and sharing across accounts. AWS Backup requires a backup vault to store RDS snapshots, which, in turn, necessitates a KMS key. For cross-account backup strategies, creating a custom-managed KMS key becomes crucial, allowing access from other accounts.<\/p>\n\n\n\n<p>AWS Backup also supports the copying of snapshots to different destinations, such as regions or AWS accounts. To accomplish this, you&#8217;ll need the Amazon Resource Name (ARN) of the backup vault. For destination backup vaults, employing AWS custom-managed KMS keys is recommended, ensuring seamless snapshot sharing with the source destination.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Two Possible Scenarios: AWS Managed KMS Key vs. Custom Managed KMS Key<\/h4>\n\n\n\n<p>Consider two AWS accounts for this setup: one as the source account with the active RDS instance and the other as the destination account for storing snapshots. For optimal results, store snapshots in different AWS regions\u2014let&#8217;s use ap-south-1 (Mumbai) as the source AWS region and ap-south-2 (Hyderabad) as the destination region.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Scenario 1: Using AWS Managed KMS Key<\/h5>\n\n\n\n<p>When your RDS is encrypted with an AWS-managed KMS key, you lack permission to update policies or grant access to other accounts. To address this, create the RDS backup in the ap-south-1 region, encrypted with an AWS-managed KMS key. Next, create an additional snapshot in the same region, using the KMS key associated with the backup vault. This enables you to share the snapshot with another account.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"737\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/12\/screenshot-2023-12-18-184010-1.png?w=800\" alt=\"\" class=\"wp-image-16776\" \/><\/figure>\n\n\n\n<p>The second snapshot is automatically created when using AWS backup services. These services allow snapshots to be copied to a different destination. In scenarios involving backup vaults for storage, the destination backup vault must grant permission to the source account for access.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n    \"Version\": \"2012-10-17\",\n    \"Statement\": &#091;\n        {\n            \"Effect\": \"Allow\",\n            \"Principal\": {\n                \"AWS\": \"arn:aws:iam::&lt;your-source-account-id&gt;:root\"\n            },\n            \"Action\": \"backup:CopyIntoBackupVault\",\n            \"Resource\": \"*\"\n        }\n    ]\n}\n<\/code><\/pre>\n\n\n\n<p>To automate this process, use Amazon EventBridge. Trigger it when a new snapshot is successfully created in the intermediate backup vault. This trigger, in turn, activates a Lambda function, copying the second snapshot from ap-south-1 to ap-south-2.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Scenario 2: RDS Encrypted with Custom-Managed KMS Key<\/h5>\n\n\n\n<p>In this scenario, you only need to update the KMS policy to allow the destination account to use the KMS key for decryption. Since the source account&#8217;s snapshot is already encrypted with a custom-managed KMS key, AWS backup services can seamlessly copy it to the destination account. Make sure to update permissions on the destination backup vault accordingly.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"367\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/12\/screenshot-2023-12-18-184109-1.png?w=800\" alt=\"\" class=\"wp-image-16778\" \/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Conclusion<\/h1>\n\n\n\n<p>Mastering cross-account and cross-region RDS backups in AWS is crucial for data security and business continuity. Despite challenges, solutions like custom KMS keys, AWS Backup, and automation ensure a resilient and efficient backup strategy. Embrace these techniques to safeguard your data and thrive in the cloud-centric landscape.<\/p>\n\n\n\n<p><strong>Blog Pundits: <strong><a href=\"https:\/\/opstree.com\/blog\/\/author\/bhupendersinghb5dca0b393\/\">&nbsp;<strong>Bhupender rawat<\/strong><\/a><\/strong><a href=\"https:\/\/opstree.com\/blog\/\/author\/naveenverma023\/\"> <\/a>and <a href=\"https:\/\/opstree.com\/blog\/\/author\/sandeep7c51ad81ba\/\" target=\"_blank\" rel=\"noreferrer noopener\">Sandeep Rawat<\/a><\/strong><\/p>\n\n\n\n<p><strong>OpsTree is an End-to-End <a href=\"https:\/\/opstree.com\/services\/\" target=\"_blank\" rel=\"noreferrer noopener\">DevOps Solution<\/a> Provider.<\/strong><\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/opstree.com\/contact-us\/?utm_source=WordPress&amp;utm_medium=Blog&amp;utm_campaign=Mastering+AWS+RDS+Backups%3A+Navigating+Encryption+Challenges+with+AWS+Key+Management+Service+%28KMS%29\" target=\"_blank\" rel=\"noreferrer noopener\">Contact Us<\/a><\/div>\n<\/div>\n\n\n\n<p class=\"has-text-align-center\"><strong>Connect with Us<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-social-links aligncenter is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-1 wp-block-social-links-is-layout-flex\"><li class=\"wp-social-link wp-social-link-linkedin  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.linkedin.com\/company\/opstree-solutions\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">LinkedIn<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-youtube  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.youtube.com\/channel\/UCeLma6SpNYH7jjYKSBNSexw\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">YouTube<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-github  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/github.com\/OpsTree\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">GitHub<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-facebook  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.facebook.com\/opstree\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Facebook<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-medium  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/medium.com\/buildpiper\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M20.962,7.257l-5.457,8.867l-3.923-6.375l3.126-5.08c0.112-0.182,0.319-0.286,0.527-0.286c0.05,0,0.1,0.008,0.149,0.02 c0.039,0.01,0.078,0.023,0.114,0.041l5.43,2.715l0.006,0.003c0.004,0.002,0.007,0.006,0.011,0.008 C20.971,7.191,20.98,7.227,20.962,7.257z M9.86,8.592v5.783l5.14,2.57L9.86,8.592z M15.772,17.331l4.231,2.115 C20.554,19.721,21,19.529,21,19.016V8.835L15.772,17.331z M8.968,7.178L3.665,4.527C3.569,4.479,3.478,4.456,3.395,4.456 C3.163,4.456,3,4.636,3,4.938v11.45c0,0.306,0.224,0.669,0.498,0.806l4.671,2.335c0.12,0.06,0.234,0.088,0.337,0.088 c0.29,0,0.494-0.225,0.494-0.602V7.231C9,7.208,8.988,7.188,8.968,7.178z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Medium<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-twitter  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/twitter.com\/opstreedevops\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M22.23,5.924c-0.736,0.326-1.527,0.547-2.357,0.646c0.847-0.508,1.498-1.312,1.804-2.27 c-0.793,0.47-1.671,0.812-2.606,0.996C18.324,4.498,17.257,4,16.077,4c-2.266,0-4.103,1.837-4.103,4.103 c0,0.322,0.036,0.635,0.106,0.935C8.67,8.867,5.647,7.234,3.623,4.751C3.27,5.357,3.067,6.062,3.067,6.814 c0,1.424,0.724,2.679,1.825,3.415c-0.673-0.021-1.305-0.206-1.859-0.513c0,0.017,0,0.034,0,0.052c0,1.988,1.414,3.647,3.292,4.023 c-0.344,0.094-0.707,0.144-1.081,0.144c-0.264,0-0.521-0.026-0.772-0.074c0.522,1.63,2.038,2.816,3.833,2.85 c-1.404,1.1-3.174,1.756-5.096,1.756c-0.331,0-0.658-0.019-0.979-0.057c1.816,1.164,3.973,1.843,6.29,1.843 c7.547,0,11.675-6.252,11.675-11.675c0-0.178-0.004-0.355-0.012-0.531C20.985,7.47,21.68,6.747,22.23,5.924z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Twitter<\/span><\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>In today&#8217;s cloud-centric landscape, businesses are increasingly adopting multi-account, multi-region AWS (Amazon Web Services) architectures for their applications. While this approach offers numerous benefits, it also introduces complex challenges when it comes to managing backups for Amazon RDS (Relational Database Service) instances across multiple accounts and regions. In this blog post, we will delve into &hellip; <a href=\"https:\/\/opstree.com\/blog\/2023\/12\/19\/mastering-aws-rds-backups-navigating-encryption-challenges-with-aws-key-management-service-kms\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Mastering AWS RDS Backups: Navigating Encryption Challenges with AWS Key Management Service (KMS)&#8221;<\/span><\/a><\/p>\n","protected":false},"author":230125713,"featured_media":29900,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[28070474],"tags":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/11\/DevSecOps-1.jpg","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pfDBOm-46V","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/15805"}],"collection":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/users\/230125713"}],"replies":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/comments?post=15805"}],"version-history":[{"count":25,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/15805\/revisions"}],"predecessor-version":[{"id":16780,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/15805\/revisions\/16780"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media\/29900"}],"wp:attachment":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media?parent=15805"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/categories?post=15805"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/tags?post=15805"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}