TASIOMIND.DEV — OPERATIONAL▸▸▸FULL STACK DEVELOPER @ GWQ SERVICEPLUS AG▸▸▸FOUNDER — K8SGPT.AI▸▸▸OPEN SOURCE: ACTIVE▸▸▸DISTRIBUTED SYSTEMS / KUBERNETES / AI▸▸▸RUST + GO + PYTHON▸▸▸FIELD TESTED / STATUS — NOMINAL▸▸▸LOCATION: EUROPE/BERLIN▸▸▸TASIOMIND.DEV — OPERATIONAL▸▸▸FULL STACK DEVELOPER @ GWQ SERVICEPLUS AG▸▸▸FOUNDER — K8SGPT.AI▸▸▸OPEN SOURCE: ACTIVE▸▸▸DISTRIBUTED SYSTEMS / KUBERNETES / AI▸▸▸RUST + GO + PYTHON▸▸▸FIELD TESTED / STATUS — NOMINAL▸▸▸LOCATION: EUROPE/BERLIN▸▸▸

IAM-Richtlinien für granularen Zugriff auf AWS Route 53

June 27, 2021

Diese Anleitung bietet Beispiele für IAM (Identity and Access Management)-Richtlinien, um den Zugriff auf AWS Route 53 feingranular zu steuern. Das Ziel ist es, einem IAM-Benutzer die Berechtigung zu erteilen, DNS-Einträge nur für spezifische, ausgewählte Domains (Hosted Zones) zu bearbeiten, während der Zugriff auf andere Zonen eingeschränkt wird.


Szenario 1: Minimaler Zugriff auf eine einzelne Hosted Zone

Diese Richtlinie gewährt einem Benutzer die Berechtigung, die Einträge einer einzigen Hosted Zone zu verwalten. Der Benutzer kann die Liste aller Hosted Zones in der Konsole jedoch nicht sehen.

Anwendungsfall: Ein Entwickler soll die DNS-Einträge für ein bestimmtes Projekt verwalten, ohne andere Domains zu sehen oder zu beeinflussen.

IAM Policy:

code
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "route53:GetHostedZone",
        "route53:ListResourceRecordSets",
        "route53:ChangeResourceRecordSets"
      ],
      "Resource": "arn:aws:route53:::hostedzone/IHRE_ZONE_ID"
    }
  ]
}
  • GetHostedZone, ListResourceRecordSets: Erlaubt das Anzeigen der Zone und ihrer Einträge.
  • ChangeResourceRecordSets: Erlaubt das Erstellen, Ändern und Löschen von DNS-Einträgen.
  • Resource: Beschränkt diese Aktionen auf die angegebene ZONE_ID.

Um auf die Zone zuzugreifen, muss der Benutzer den direkten Link zur AWS-Konsole verwenden: https://console.aws.amazon.com/route53/v2/hostedzones#ListRecordSets/IHRE_ZONE_ID


Szenario 2: Zonen auflisten, aber nur eine bearbeiten

Diese Richtlinie ist benutzerfreundlicher. Der Benutzer kann die Liste aller Hosted Zones im Konto sehen, aber nur die Einträge der einen, spezifisch erlaubten Zone bearbeiten.

IAM Policy:

code
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowListingOfZones",
      "Effect": "Allow",
      "Action": [
        "route53:ListHostedZones",
        "route53:ListHostedZonesByName"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AllowManagementOfSingleZone",
      "Effect": "Allow",
      "Action": [
        "route53:GetHostedZone",
        "route53:ListResourceRecordSets",
        "route53:ChangeResourceRecordSets"
      ],
      "Resource": "arn:aws:route53:::hostedzone/IHRE_ZONE_ID"
    }
  ]
}
  • Das erste Statement erlaubt das Auflisten aller Zonen (Resource: "*"), da diese Aktionen keine Ressourcen auf Zonenebene unterstützen.
  • Das zweite Statement beschränkt die schreibenden und lesenden Aktionen auf die spezifische Zone.

Szenario 3: Schreibgeschützter Zugriff auf alle Zonen

Diese Richtlinie gewährt einem Benutzer Lesezugriff auf alle Hosted Zones und deren Einträge, ohne die Möglichkeit, Änderungen vorzunehmen.

Anwendungsfall: Ein Auditor oder ein Mitglied eines externen Teams muss die DNS-Konfiguration einsehen können, darf aber keine Änderungen vornehmen.

IAM Policy:

code
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "route53:GetHostedZone",
        "route53:ListHostedZones",
        "route53:ListHostedZonesByName",
        "route53:ListResourceRecordSets"
      ],
      "Resource": "*"
    }
  ]
}

Fazit

Durch die Kombination von ressourcen-spezifischen Berechtigungen (Resource: "arn:...") und allgemeinen Lese-Berechtigungen (Resource: "*") können Sie präzise und sichere IAM-Richtlinien für die Verwaltung von Route 53 erstellen. Dies ist ein wichtiger Baustein des Principle of Least Privilege.