Amazon RDS - DB Access Control

Per accedere all'istanza database Amazon RDS, l'utente necessita di autorizzazioni specifiche. Questo viene configurato utilizzando AWS IAM (Identity and Access management). In questo tutorial vedremo come viene eseguita questa configurazione.

La configurazione prevede due parti.

  • Authentication

  • Controllo di accesso

Implica la creazione del nome utente, la password e la generazione delle chiavi di accesso per l'utente. Con l'aiuto della chiave di accesso, è possibile effettuare l'accesso programmatico al servizio AWS RDS. Gli strumenti SDK e CLI utilizzano le chiavi di accesso per accedere crittograficamente con la richiesta.

Possiamo anche utilizzare un ruolo IAM per autenticare un utente. Ma il ruolo non è associato a un utente specifico, ma qualsiasi utente può assumere il ruolo temporaneamente e completare l'attività richiesta. Al termine dell'attività, il ruolo può essere revocato e l'utente perde la capacità di autenticazione.

Dopo che un utente è stato autenticato, un criterio collegato a tale utente determina il tipo di attività che l'utente può svolgere. Di seguito è riportato un esempio di policy che consente la creazione di un'istanza database RDS, su un'istanza t2.micro per il motore database MySQL.

{
    "Version": "2018-09-11",
    "Statement": [
        {
            "Sid": "AllowCreateDBInstanceOnly",
            "Effect": "Allow",
            "Action": [
                "rds:CreateDBInstance"
            ],
            "Resource": [
                "arn:aws:rds:*:123456789012:db:test*",
                "arn:aws:rds:*:123456789012:og:default*",
                "arn:aws:rds:*:123456789012:pg:default*",
                "arn:aws:rds:*:123456789012:subgrp:default"
            ],
            "Condition": {
                "StringEquals": {
                    "rds:DatabaseEngine": "mysql",
                    "rds:DatabaseClass": "db.t2.micro"
                }
            }
        }
    ]
}

Azione su qualsiasi risorsa RDS

Nell'esempio seguente vediamo una politica che consente qualsiasi azione di descrizione su qualsiasi risorsa RDS. Il simbolo * viene utilizzato per rappresentare qualsiasi risorsa.

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Sid":"AllowRDSDescribe",
         "Effect":"Allow",
         "Action":"rds:Describe*",
         "Resource":"*"
      }
   ]
}

Non consentire l'eliminazione di un'istanza database

La policy seguente impedisce a un utente di eliminare un'istanza database specifica.

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Sid":"DenyDelete1",
         "Effect":"Deny",
         "Action":"rds:DeleteDBInstance",
         "Resource":"arn:aws:rds:us-west-2:123456789012:db:my-mysql-instance"
      }
   ]
}