Verbeterde bewaking inschakelen voor Amazon RDS

Amazon RDS biedt een verbeterde bewakingsfunctie voor databases. Met behulp van deze functie kan Amazon RDS databasemetriek bewaken en loggen naar Amazon CloudWatch Logs. Het inschakelen van deze functie vereist echter dat een rol aan de Amazon RDS wordt gekoppeld en deze zelf vereist dat de gebruiker PassRole toestemming heeft.

Wat zullen we hier zien?

In deze zelfstudie leer je hoe je de ‘IAM Passrole’ toestemming kunt gebruiken om een verbeterde bewaking voor Amazon RDS in te schakelen. We zullen dit zien door een eenvoudig voorbeeld te demonstreren.

Wat is de Passrole toestemming?

Tijdens het configureren van veel AWS diensten is het nodig dat de gebruiker/beheerder een rol aan die dienst doorgeeft. De dienst neemt dan die rol aan om de acties uit te voeren die binnen die rol zijn toegestaan. In de meeste gevallen wordt de rol slechts eenmalig aan de dienst doorgegeven bij het instellen van de dienst, en niet telkens als de rol door de dienst wordt aangenomen.

Een gebruiker moet rechten hebben om een rol aan een dienst door te geven. Dit is een sterk beveiligingsaspect want alleen bevoegde gebruikers mogen een rol aan een dienst doorgeven. Bovendien kunnen de beheerders bepalen welke soort rol een gebruiker aan de dienst kan doorgeven.

Voorwaarden om een rol aan een dienst door te geven

Een IAM gebruiker kan een rol aan een AWS dienst doorgeven als die aan de volgende drie voorwaarden voldoet:

  1. Ten eerste een beleid, voor de rol die we gaan maken, dat de toestemmingsgrens of reikwijdte van onze IAM rol zal bepalen.
  2. Vervolgens een vertrouwensbeleid dat bij deze rol hoort en dat in principe de AWS dienst (RDS in ons geval) zal toestaan de rol aan te nemen/over te nemen en de bij de rol vermelde toestemmingen te gebruiken.
  3. Tenslotte wordt een IAM toestemmingsbeleid aan de IAM gebruiker gekoppeld dat hem toestaat de rollen door te geven waartoe hij gemachtigd is.

Creƫren van de rol

In dit onderdeel maken we een rol aan met de naam ‘RDS-Monitoring-Role’ en koppelen er een door AWS beheerd ‘AmazonRDSEnhancedMonitoringRole’ beleid aan.

Stap 1. Ga vanuit de beheerders- of root account naar het IAM dashboard en kies ‘Roles’ onder de optie Access management. Klik op de knop ‘Create Role’.

De vertrouwde entiteit kiezen

Stap 2. In de sectie ‘Select trusted entity’ zie je de optie ‘Trusted entity type’, kies hier de optie ‘AWS service’. Zoek nu naar ‘RDS’ onder ‘use cases for other AWS services’ en kies de optie ‘RDS – Enhanced Monitoring’.

Stap 3. Bevestig in de volgende sectie ‘Machtigingen toevoegen’ een ‘AmazonRDSEnhancedMonitoringRole’ beleid en klik dan op ‘Volgende’:

Het toevoegen van het ‘AmazonRDSEnhancedMonitoringRole’ beleid

Stap 4. Voer hier een naam in voor de rol:’RDS-Monitoring-Role’ en een optionele beschrijving ervoor. Merk op dat aan deze rol automatisch een vertrouwensbeleid wordt gekoppeld:

{
	"Version": "2012-10-17",
	"Statement": [
    	{
        	"Sid": "",
        	"Effect": "Allow",
        	"Principal": {
            	"Service": "monitoring.rds.amazonaws.com"
        	},
        	"Action": "sts:AssumeRole"
    	}
	]
}

Stap 5. Klik tenslotte op de knop ‘Create role’ om de bovenstaande rol aan te maken:

Benoemen van de rol

IAM beleid voor de IAM gebruiker toevoegen

Tot nu toe hebben we een rol gemaakt en er een beleid aan gekoppeld, en dan hebben we ook een vertrouwensbeleid gekregen. Hiermee is aan twee van onze voorwaarden voldaan. Nu gaan we verder met de derde voorwaarde, we maken een beleid voor de IAM gebruiker zelf. In dit beleid hebben we de gebruiker toestemming gegeven voor volledige EC2 en RDS toegang en ook toestemming om de bovenstaande ‘RDS-Monitoring-Role’ rol aan onze RDS instantie te koppelen. Je kunt zelf het IAM toestemmingsniveau voor EC2 en RDS regelen, het gaat ons alleen om het aantonen van de PassRole toestemming:

Stap 1. Ga weer naar het IAM dashboard vanuit de beheerder of root account en kies ‘Policies’ en klik op de knop ‘Create policy’.

Stap 2. Op de wizard Beleid maken klik je op de JSON tab en plak je eenvoudig de volgende JSON code voor dit beleid:

{
	"Version": "2012-10-17",
	"Statement": [
    	{
        	"Sid": "VisualEditor0",
        	"Effect": "Allow",
        	"Action": "iam:PassRole",
        	"Resource": "arn:aws:iam::account_number:role/RDS-Monitoring-Role"
    	},
    	{
        	"Sid": "VisualEditor1",
        	"Effect": "Allow",
        	"Action": [
            	"rds:*",
            	"logs:Describe*",
            	"logs:List*",
            	"logs:StartQuery",
            	"ec2:*",
            	"iam:ListRoles",
            	"logs:StopQuery",
            	"logs:TestMetricFilter",
            	"logs:FilterLogEvents",
            	"logs:Get*",
            	"cloudwatch:GetMetricData"
        	],
        	"Resource": "*"
    	}
	]
}

Vervang in de bovenstaande code ‘IAM_User_ID‘ door het account nummer of ID van de IAM gebruiker en ‘RDS-Monitoring-Role‘ door de naam van de rol in je geval. Klik op ‘Next:Tags’.

Stap 3. Specificeer eventuele optionele ‘Tags’ die je wilt gebruiken en klik op ‘Next:Review’:

Stap 4. Zet hier een naam voor dit beleid(‘RDS-Monitoring-User-Policy’ in ons geval) en klik tenslotte op de knop ‘Create policy’ om dit beleid aan te maken:

Aanmaken van de 'RDS-Monitoring-User-Policy'

Stap 5. Koppel het hierboven gemaakte beleid aan de IAM gebruiker:

Koppel het beleid aan de IAM gebruiker

Database zonder rol

Hieronder zien we het scenario van de database configuratie zonder de hierboven gemaakte rol (RDS-Monitoring-Role) te koppelen. Hier zien we dat we een fout krijgen van cloudwatch:GetMetricData.

CloudWatch fout

De rol aan de Database koppelen

Nu zullen we de ‘RDS-Monitoring-Role’ aan de databank koppelen en kijken of de bovenstaande CloudWatch fout gaat of niet. Een rol kan aan een RDS instantie worden gekoppeld op het moment dat die wordt aangemaakt of nadat hij is aangemaakt. In het geval dat je de databank al gemaakt hebt, moet je de db-instantie aanpassen. Hoe het ook zij, ga naar de RDS console en open het blok ‘Aanvullende configuratie’ onder de instelling van de doeldatabase. Zoek de sectie ‘Monitoring’ en vink hier het vakje aan dat overeenkomt met ‘Enable Enhanced monitoring’. Kies onder de ‘Monitoring Role’ je rol uit het uitklapmenu en klik op ‘continue’:

Koppel de rol aan het gegevensbestand

Kies in het volgende venster de actie voor wanneer je de veranderingen wilt toepassen en klik op ‘Modify DB instance’:

De veranderingen toepassen

Als je dit keer de details van de database configuratie ziet, zou de CloudWatch fout verdwenen moeten zijn:

Geen CloudWatch fout

Conclusie

In deze gids hebben we geleerd hoe je de PassRole toestemming kunt gebruiken om de Verbeterde Monitoring functie voor RDS in te schakelen. PassRole is een geweldige functie om een IAM gebruiker de minste rechten te geven voor toegang tot andere AWS diensten waartoe hij niet gemachtigd is.