Post

AWS Advance: RDS

RDS

AWS RDS Overview

  • RDS stannds for Relatioal Database service
  • It’s a managed DB service for DB use SQL as a query language.
  • It allow you to create databases in the cloud that are managed by AWS
    • Postgres
    • MYSQL
    • MariaDB
    • Oracle
    • Microsoft SQL Server
    • Aurora(AWS Proprietary database)

Advantage over using RDS versus deploying DB on EC2

  • RDS is a managed service:
    • Automated provisioning, OS patching
    • Conitnous backups and restore to specific timestamp (Point in Time Restore)!
    • Monitoring dashboard
    • Read replicas for improved read performance
    • Maintennace windows for upgrade
    • Sacling capacity (vertical and horizotal)
    • Storage backed by EBS (gp2 or io1)
  • But you can’t SSH into your instances

RDS backups

  • Backups are automatically enabled in RDS
  • Automated backups:
    • Daily full backup of the database (durinng the maintenancce window)
    • Transaction logs are baccked-up by RDS every 5 minutes
    • ability to restore to any point in time (from oldest to 5 minutes ago)
    • 7 days retention (can be increased to 35 days)
  • DB snapshots:
    • Manually triggered by the user
    • Retention of backup for as long as you want

RDS Storage Auto Scaling

  • Helps you increase storage on your RDS DB instannce dynamically
  • When RDS detects you are running out of free database storage, it scales automatically
  • Avoid manually scaling your database storage
  • You have to set Maximum Storage Threshold (maximum limit for DB storage)
  • Automatically modify storage if
    • Free storage is less than 10% of alloccated storage
    • Low storage lasts at least 5 minutes
    • 6 hours have passed sincce last modification

RDS Read Replicas for read scalability

  • Up to 5 read replicas
  • Within AZ, Cross AZ or Cross Region
  • Replication is ASYNC, so reads are eventually consistent
  • Replicas can be promoted to their own DB
  • Applications must update the connection string to leverage read replicas

RDS Read replicas - Use Cases

  • You have a production database that is taking on normal load
  • You want to run a reporting application is unfacted
  • Read replicas are used for SELECT(=read) only kind of statements (not INSERT, UPDATE, DELETE)

RDS Read Replicas - Network Cost

  • In AWS there’s a networ cost when data goes from one AZ to another
  • For RDS read replicas within the same region, you don’t pay that fee

RDS Multi AZ (Disater Recovery)

  • Sync replication
  • One DNS name - automactic app failover too standby
  • Increase availability
  • Failover in case of loss AZ, loss of networkk, instance or storage failure
  • No manual intervention in apps
  • Not used for scaling
  • Multi AZ replication is free
  • Note: The Read Replicas bet setup as Multi AZ for** Disater Recovery**

RDS - From Single AZ to Multi AZ

  • Zero downtime operation (no need to stop the DB)
  • Just click on “modify” for the database
  • The following happens internally:
    • A snapshot is taken
    • A new DB is retored from the snapshot in a new AZ
    • Syncchronization is establishhed between the two databases

RDS Security - Encryption

  • At rest ecryption
    • Possibility to encrypt the master & read replicas with AWS KMS - AES-256 encryption
    • Enccryption has to be defined at launch time
    • If the master is not encrypted the read replicas cannot be encrypted
    • Transparent Data Encryption (TDE) available for Oracle and SQL Server -** In-flight encryption**
    • SSL certificates to encrypt data to RDS in flight
    • Provide SSL options with trust certificate when connecting to database
    • To enforce SSL:
      • PostgreSQL: rds.force_ssl=1 i QWS RDS console
      • MYSQL: Within the DB
      • Grant Usage On . To ‘mycluster’@’%’ Require SSL;

RDS Encryption Operations

  • Encrypting RDS backups
    • Snapshots of un-crypted RDS databases are un-crypted
    • Sapshots of enncrypted RDS databases are encrypted
    • Can copy a snapshot into an encrypted one
  • To encrypt an un-encrypted RDS database
    • Create a snapshot of the un-encrypted database
    • Copy the snapshot and enable encryption for the snapshot
    • Restore the database from the encrypted snapshot
    • Migrate applications to the new database, and delete the old database

RDS Security - Network & IAM

  • Network Security
    • RDS databases are usually deployed within a private subnet, not in a public one
    • RDS security works by leveraging seccurity groups (the same concept as for EC2 instances)
    • it controls which ip / security group can comminicate with RDS
  • Access Management
    • IAM policies help control who can manage AWS RDS (through the RDS API)
    • Tranditionnal Username annd Password can be used to login into the database
    • IAM-based authentication can be used to login into RDS MYSQL & PostgreSQL

RDS - IAM Authentication

  • IAM database authentication works with MYSQL and PostgreSQL
  • You don’t need a password, just an authentication token obtained through IAM & RDS API calls
  • Auth token has a llifetime of 15 minutes
  • Benefits:
    • Networkk in/out must be encrypted using SSL
    • IAM to cenntrally manage users instead of DB
    • Cann leverage IAM roles and EC2 instance profiles for easy integration

RDS Security - Summary

  • Encryptionn at rest
    • is done only when you first create the DB instance
    • or: unencrypted DB => snapshot => ccopy snapshot as ecrypted => create DB from sapshot
  • Your resposibility:
    • Checck the ports / IP / security group inbound rules in DB’s SG
    • In-database user creation and permission or manage through IAM
    • Creating a database with or without public access
    • Ensure parameter groups or DB is configured to only allow SSL connections
  • AWS responsibility
    • No SSH access
    • No manual DB patching
    • No manual OS patching
    • No way to audit the underlying instance
This post is licensed under CC BY 4.0 by the author.