Amazon RDS - DB-Zugriffssteuerung
Für den Zugriff auf die Amazon RDS DB-Instanz benötigt der Benutzer bestimmte Berechtigungen. Dies wird mithilfe von AWS IAM (Identity and Access Management) konfiguriert. In diesem Tutorial werden wir sehen, wie diese Konfiguration durchgeführt wird.
Die Konfiguration besteht aus zwei Teilen.
Authentication
Zugangskontrolle
Dabei werden der Benutzername und das Kennwort sowie die Zugriffsschlüssel für den Benutzer erstellt. Mit Hilfe des Zugriffsschlüssels ist es möglich, programmgesteuert auf den AWS RDS-Service zuzugreifen. Die SDK- und CLI-Tools verwenden die Zugriffsschlüssel, um sich mit der Anforderung kryptografisch anzumelden.
Wir können auch eine IAM-Rolle verwenden, um einen Benutzer zu authentifizieren. Die Rolle ist jedoch keinem bestimmten Benutzer zugeordnet, sondern jeder Benutzer kann die Rolle vorübergehend übernehmen und die erforderliche Aufgabe ausführen. Nachdem die Aufgabe beendet ist, kann die Rolle widerrufen werden und der Benutzer verliert die Authentifizierungsfähigkeit.
Nachdem ein Benutzer authentifiziert wurde, bestimmt eine an diesen Benutzer angehängte Richtlinie die Art der Aufgaben, die der Benutzer ausführen kann. Im Folgenden finden Sie ein Beispiel für eine Richtlinie, mit der eine RDS-DB-Instanz auf einer t2.micro-Instanz für die DB Engine MySQL erstellt werden kann.
{
"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"
}
}
}
]
}
Aktion für eine beliebige RDS-Ressource
Im folgenden Beispiel sehen wir eine Richtlinie, die jede beschreibende Aktion für jede RDS-Ressource zulässt. Das Symbol * wird verwendet, um eine Ressource darzustellen.
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AllowRDSDescribe",
"Effect":"Allow",
"Action":"rds:Describe*",
"Resource":"*"
}
]
}
Das Löschen einer DB-Instanz ist nicht zulässig
Die folgende Richtlinie verhindert, dass ein Benutzer eine bestimmte DB-Instanz löscht.
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"DenyDelete1",
"Effect":"Deny",
"Action":"rds:DeleteDBInstance",
"Resource":"arn:aws:rds:us-west-2:123456789012:db:my-mysql-instance"
}
]
}