Amazon RDS - DB Access Control

Aby uzyskać dostęp do instancji Amazon RDS DB, użytkownik potrzebuje określonych uprawnień. Jest to konfigurowane za pomocą AWS IAM (zarządzanie tożsamością i dostępem). W tym samouczku zobaczymy, jak odbywa się ta konfiguracja.

Konfiguracja składa się z dwóch części.

  • Authentication

  • Kontrola dostępu

Polega na stworzeniu nazwy użytkownika, hasła i wygenerowaniu kluczy dostępu dla użytkownika. Za pomocą klucza dostępu można uzyskać programowy dostęp do usługi AWS RDS. Narzędzia SDK i CLI używają kluczy dostępu do kryptograficznego logowania się z żądaniem.

Możemy również użyć roli IAM do uwierzytelnienia użytkownika. Rola nie jest jednak przypisana do żadnego konkretnego użytkownika, a raczej każdy użytkownik może tymczasowo przejąć tę rolę i wykonać wymagane zadanie. Po zakończeniu zadania rola może zostać odwołana, a użytkownik traci możliwość uwierzytelniania.

Po uwierzytelnieniu użytkownika polityka dołączona do tego użytkownika określa typ zadań, które użytkownik może wykonywać. Poniżej znajduje się przykład zasad, które pozwalają na utworzenie instancji RDS DB na instancji t2.micro dla bazy danych 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"
                }
            }
        }
    ]
}

Działanie na dowolnym zasobie RDS

W poniższym przykładzie widzimy zasadę, która umożliwia dowolne opisywanie akcji na dowolnym zasobie RDS. Symbol * służy do reprezentowania dowolnego zasobu.

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

Nie zezwalaj na usuwanie instancji bazy danych

Poniższa zasada zabrania użytkownikowi usunięcia określonej instancji bazy danych.

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