# AWS Identity and Access Management

AWS Identity & Access Management (IAM) ist ein wichtiger Bestandteil der Amazon Web Services (AWS) Plattform und dient der Verwaltung von Benutzeridentitäten und Zugriffsrechten innerhalb der AWS-Umgebung. Es handelt sich um einen webbasierten Dienst, der es Administratoren ermöglicht, den Zugriff auf AWS-Ressourcen zu steuern und zu verwalten.

## Allgemeines

Identity & Access Management (IAM) ist eine leistungsstarke und skalierbare Lösung von Amazon Web Services (AWS), die es Kunden ermöglicht, Identitäten und Zugriffsrechte für ihre AWS-Ressourcen zentral zu verwalten. Mit IAM können Administratoren die Zugriffsrechte für Benutzer, Gruppen und Rollen definieren und steuern. Dies ermöglicht eine granulare Steuerung des Zugriffs auf AWS-Ressourcen basierend auf den individuellen Anforderungen des Unternehmens.
IAM bietet eine Vielzahl von Funktionen, die es Administratoren ermöglichen, die Sicherheit und Compliance innerhalb ihrer AWS-Umgebung zu verbessern.
Zu den wichtigsten Funktionen gehören:
* Benutzerverwaltung
* Gruppenverwaltung
* Rollenverwaltung
* Zugriffskontrollrichtlinien
* Multi-Faktor-Authentifizierung
* Audit- und Compliance Funktionen
AWS Identity and Access Management (IAM) ist ein Webservice, der dabei hilft, den Zugriff auf AWS-Ressourcen zu kontrollieren. Mit IAM können Berechtigungen zentral verwaltet werden, um festzulegen, auf welche AWS-Ressourcen Benutzer zugreifen dürfen. Man verwendet IAM, um zu steuern, wer sich authentifiziert (anmeldet) und autorisiert (Berechtigungen hat), um Ressourcen zu nutzen.
Wenn man ein AWS-Konto erstellt, enthält es anfangs nur eine einzelne Anmeldeidentität, die vollen Zugriff auf alle AWS-Services und Ressourcen im Konto hat. Diese Identität wird als AWS-Konto-Root-Benutzer bezeichnet. Um auf den Root-Benutzer zuzugreifen, muss man sich mit der E-Mail-Adresse und dem Passwort anmelden, die bei der Kontoerstellung verwendet wurden. Es wird ausdrücklich davon abgeraten, den Root-Benutzer für alltägliche Aufgaben zu verwenden. Man sollte die Anmeldeinformationen des Root-Benutzers schützen und sie nur für Aufgaben verwenden, die nur der Root-Benutzer ausführen kann.

## Funktionsweise

Die allgemeine Funktionsweise von AWS Identity and Access Management (IAM) besteht darin, die Kontrolle über den Zugriff auf AWS-Ressourcen zu ermöglichen.
Hier sind die Schritte, die IAM in der Regel durchläuft:
* Erstellung von Identitäten:
** Man erstellt Benutzer, Gruppen oder Rollen in IAM, um Identitäten zu definieren. Diese Identitäten werden verwendet, um Benutzer und Ressourcen zu organisieren.
* Vergabe von Berechtigungen:
** Man weist Richtlinien zu, um Berechtigungen für die Identitäten festzulegen. Richtlinien definieren, welche Aktionen auf welche Ressourcen ausgeführt werden dürfen. Durch die Zuweisung von Richtlinien erhält eine Identität die erforderlichen Berechtigungen.
* Authentifizierung:
** Benutzer authentifizieren sich, um Zugriff auf AWS-Services und Ressourcen zu erhalten. IAM unterstützt verschiedene Authentifizierungsmethoden, wie z. B. die Verwendung von Benutzernamen und Passwörtern oder Multi-Faktor-Authentifizierung (MFA).
* Autorisierung:
** Nach der Authentifizierung überprüft IAM die Berechtigungen der identifizierten Benutzer und entscheidet, ob sie die angeforderten Aktionen auf die gewünschten Ressourcen durchführen dürfen. Wenn die Berechtigungen vorhanden sind, wird der Zugriff gewährt, andernfalls wird er verweigert.
* Verwaltung von Zugriffsänderungen:
** IAM ermöglicht es, Berechtigungen für Identitäten dynamisch anzupassen. Man kann Richtlinien aktualisieren, um neue Berechtigungen hinzuzufügen oder bestehende zu entfernen, um den Zugriff zu steuern.
* Überwachung und Protokollierung:
** IAM protokolliert alle Aktivitäten, die mit den Identitäten und Ressourcen in Zusammenhang stehen. Dadurch kann man die Zugriffshistorie überwachen, Sicherheitsvorfälle erkennen und Compliance-Anforderungen erfüllen.

## Zugriff auf IAM

Es gibt unterschiedliche Arten wie man auf IAM zugreifen kann.

### AWS Management Console

* Anmeldung bei der AWS Management Console: Man öffnet den Webbrowser und besucht die AWS Management Console-Website. Dort gibt man die Anmeldeinformationen ein, die normalerweise die E-Mail-Adresse und das Passwort des AWS-Kontos sind.
* Authentifizierung: Nachdem man die Anmeldeinformationen eingegeben hat, authentifiziert sich die AWS Management Console gegenüber dem IAM-Dienst, um sicherzustellen, dass die Anmeldeinformationen gültig sind und die Zugriffsberechtigungen korrekt sind.
* Autorisierung: Sobald die Authentifizierung erfolgreich ist, überprüft IAM die Berechtigungen des authentifizierten Benutzers. Es wird überprüft, welche AWS-Services und Ressourcen der Benutzer über die Management Console zugreifen kann. Dies basiert auf den zugewiesenen IAM-Richtlinien und den Berechtigungen, die der Benutzer hat.
* Zugriff auf die AWS Management Console: Wenn die Autorisierung erfolgreich ist, gewährt IAM dem Benutzer den Zugriff auf die AWS Management Console. Der Benutzer erhält eine visuelle Oberfläche, die es ermöglicht, AWS-Services zu verwalten, Ressourcen einzurichten, Konfigurationen vorzunehmen und vieles mehr.
Es ist wichtig zu beachten, dass der Zugriff auf die AWS Management Console durch IAM gesteuert wird. Dies bedeutet, dass die IAM-Richtlinien und Berechtigungen die Aktionen und Ressourcen bestimmen, auf die ein Benutzer über die Management Console zugreifen kann. Es ist ratsam, die Berechtigungen sorgfältig zu konfigurieren, um die Sicherheit zu gewährleisten und den Zugriff auf AWS-Ressourcen entsprechend den Anforderungen zu steuern.

### AWS Befehlszeilen-Tools

Der Zugriff auf AWS Identity and Access Management (IAM) über die AWS-Befehlszeilen-Tools ermöglicht die Verwaltung von IAM-Ressourcen über die Befehlszeilenschnittstelle. Hier ist die allgemeine Funktionsweise des Zugriffs:
* Installation der AWS-Befehlszeilen-Tools: Zunächst muss man die AWS-Befehlszeilen-Tools, wie z. B. die AWS CLI (Command Line Interface), auf dem lokalen Computer installieren. Dies beinhaltet das Herunterladen und Konfigurieren der Tools gemäß den Anweisungen von AWS.
* Konfiguration der Zugriffsinformationen: Nach der Installation der Befehlszeilen-Tools muss man die Zugriffsinformationen konfigurieren, um sich mit seinem AWS-Konto zu authentifizieren. Dies beinhaltet die Angabe des AWS-Zugriffsschlüssels und des geheimen Zugriffsschlüssels oder die Verwendung von IAM-Rollen mit temporären Sicherheitsanmeldeinformationen.
* Verwendung von IAM-Befehlen: Mit den AWS-Befehlszeilen-Tools kann man verschiedene IAM-Befehle ausführen, um IAM-Ressourcen zu verwalten. Zum Beispiel kann man Benutzer erstellen, Gruppen verwalten, Rollen konfigurieren, Richtlinien zuweisen und andere IAM-Operationen durchführen.
* Authentifizierung und Autorisierung: Die Befehlszeilen-Tools authentifizieren sich gegenüber dem IAM-Dienst, um sicherzustellen, dass die Zugriffsinformationen korrekt sind. Anschließend überprüft IAM die Berechtigungen des authentifizierten Benutzers, um sicherzustellen, dass er die erforderlichen Rechte hat, um die angeforderten IAM-Aktionen auszuführen.
* Rückmeldung und Ausgabe: Nach Ausführung eines IAM-Befehls gibt die Befehlszeilenschnittstelle Feedback zur erfolgreichen Ausführung oder gibt Fehlermeldungen aus, wenn etwas schiefgegangen ist. Man erhält auch Ausgaben, die Informationen über erstellte oder geänderte IAM-Ressourcen enthalten können.
Durch den Zugriff auf IAM über die AWS-Befehlszeilen-Tools kann man die Verwaltung von IAM-Ressourcen automatisieren und in Skripte oder Workflows integrieren. Dies bietet Flexibilität und Skalierbarkeit bei der Verwaltung von Zugriffsrechten und -richtlinien. Es ist jedoch wichtig, die Zugriffsrechte angemessen zu konfigurieren und die Sicherheit bewusst zu beachten, um unautorisierten Zugriff zu verhindern und die Integrität der IAM-Ressourcen zu gewährleisten.

### AWS-SDKs

Der Zugriff auf AWS Identity and Access Management (IAM) über AWS-SDKs (Software Development Kits) ermöglicht die Verwaltung von IAM-Ressourcen in einer Anwendungscodebasis. Hier ist die allgemeine Funktionsweise des Zugriffs:
* Installation des AWS-SDKs: Zunächst muss man das entsprechende AWS-SDK für die gewünschte Programmiersprache installieren. Die SDKs enthalten vorkonfigurierte Klassen und Methoden, die speziell für die Interaktion mit AWS-Services entwickelt wurden, einschließlich IAM.
* Konfiguration der Zugriffsinformationen: Nach der Installation des SDKs muss man die Zugriffsinformationen konfigurieren, um sich mit seinem AWS-Konto zu authentifizieren. Dies beinhaltet die Angabe des AWS-Zugriffsschlüssels und des geheimen Zugriffsschlüssels oder die Verwendung von IAM-Rollen mit temporären Sicherheitsanmeldeinformationen.
* Erstellung einer IAM-Clientinstanz: Man erstellt eine Clientinstanz des IAM-Serviceobjekts über das AWS-SDK. Diese Clientinstanz ermöglicht die Kommunikation mit dem IAM-Service.
* Verwendung von IAM-APIs: Über die IAM-Clientinstanz kann man die verfügbaren IAM-APIs aufrufen, um IAM-Ressourcen zu verwalten. Dies beinhaltet das Erstellen von Benutzern, Gruppen, Rollen, Richtlinien, das Zuweisen von Berechtigungen und das Durchführen anderer IAM-Aktionen.
* Authentifizierung und Autorisierung: Die SDKs authentifizieren sich automatisch gegenüber dem IAM-Dienst, um sicherzustellen, dass die Zugriffsinformationen korrekt sind. Anschließend überprüft IAM die Berechtigungen des authentifizierten Benutzers, um sicherzustellen, dass er die erforderlichen Rechte hat, um die angeforderten IAM-Aktionen auszuführen.
* Verarbeitung von Rückgabewerten: Nachdem man eine IAM-Aktion mit dem SDK durchgeführt hat, erhält man Rückgabewerte, die Informationen über den Status der Aktion enthalten. Diese Rückgabewerte können Auskunft über den Erfolg der Operation oder über etwaige Fehler geben.
Durch den Zugriff auf IAM über AWS-SDKs kann man die IAM-Verwaltungsfunktionen in eigene Anwendungen integrieren und automatisieren. Dies ermöglicht eine feinere Steuerung und Flexibilität bei der Verwaltung von IAM-Ressourcen. Es ist jedoch wichtig, die Zugriffsrechte angemessen zu konfigurieren und die Sicherheitsbewertung zu beachten, um die Integrität und den Schutz der IAM-Ressourcen zu gewährleisten.

### IAM-Query-API

Der Zugriff auf AWS Identity and Access Management (IAM) über die IAM-Query-API ermöglicht die Verwaltung von IAM-Ressourcen durch das Senden von HTTP-Anfragen an die IAM-Endpunkte. Hier ist die allgemeine Funktionsweise des Zugriffs:
* Erstellen von HTTP-Anfragen: Man erstellt HTTP-Anfragen, um IAM-Ressourcen zu verwalten. Diese Anfragen können mit HTTP-Methoden wie POST, GET, PUT oder DELETE durchgeführt werden und enthalten Informationen über die gewünschte IAM-Aktion, die Parameter und die Zugriffsinformationen.
* Authentifizierung: Um sich gegenüber dem IAM-Dienst zu authentifizieren, müssen die Anfragen Zugriffsinformationen enthalten. Dies kann durch Hinzufügen von Zugriffsschlüsseln oder durch Verwendung von IAM-Rollen mit temporären Sicherheitsanmeldeinformationen erfolgen.
* Verwendung der IAM-Query-API: Man sendet die HTTP-Anfragen an die IAM-Endpunkte, um IAM-Ressourcen zu verwalten. Die IAM-Query-API bietet verschiedene Endpunkte für die Verwaltung von Benutzern, Gruppen, Rollen, Richtlinien und anderen IAM-Entitäten.
* Verarbeitung der Antwort: Nach dem Senden einer Anfrage erhält man eine HTTP-Antwort vom IAM-Dienst. Diese Antwort enthält Informationen über den Status der Anfrage und die Rückgabewerte, die Details zur durchgeführten IAM-Aktion enthalten können.
* Fehlerbehandlung: Im Falle von Fehlern oder ungültigen Anfragen gibt der IAM-Dienst Fehlercodes und Fehlermeldungen zurück. Es ist wichtig, die Antworten zu überprüfen und die Fehlerbehandlung entsprechend zu implementieren.
Der Zugriff auf IAM über die IAM-Query-API bietet Flexibilität und Kontrolle bei der Verwaltung von IAM-Ressourcen, insbesondere in Situationen, in denen keine AWS-SDKs verfügbar sind oder eine engere Integration auf HTTP-Ebene erforderlich ist. Es ist wichtig, dass die Zugriffsinformationen sicher behandelt und die Anfragen ordnungsgemäß authentifiziert werden, um die Sicherheit und den Schutz der IAM-Ressourcen zu gewährleisten.

## Wichtige Aspekte von IAM
### Identitäten

In AWS Identity and Access Management (IAM) werden Identitäten verwendet, um den Zugriff auf AWS-Ressourcen zu verwalten. Es gibt verschiedene Arten von IAM-Identitäten, die in IAM definiert werden können.

#### IAM-Benutzer

IAM-Benutzer sind Entitäten, die spezifischen Personen, Anwendungen oder Diensten zugeordnet sind. Jeder Benutzer erhält eine eindeutige Benutzername und Zugriffsschlüssel, um sich bei AWS-Diensten anzumelden und auf Ressourcen zuzugreifen. IAM-Benutzer haben individuelle Sicherheitsanmeldeinformationen und können in Gruppen organisiert werden, um eine effiziente Verwaltung zu ermöglichen.

#### IAM-Gruppen

IAM-Gruppen ermöglichen die Zusammenfassung von IAM-Benutzern mit ähnlichen Zugriffsanforderungen. Anstatt Berechtigungen für jeden Benutzer einzeln festzulegen, können Berechtigungen einer Gruppe zugewiesen werden. Indem man Benutzer einer Gruppe hinzufügt, erbt jeder Benutzer die Berechtigungen der Gruppe. Dies erleichtert die konsistente Verwaltung von Zugriffsrechten für Benutzer mit ähnlichen Funktionen oder Verantwortlichkeiten.

#### IAM-Rollen

IAM-Rollen ermöglichen es, temporäre Zugriffsberechtigungen an vertrauenswürdige Entitäten zu delegieren, z. B. an AWS-Services oder -Benutzer in einem anderen AWS-Konto. Rollen werden verwendet, um privilegierten Zugriff auf Ressourcen zu gewähren, ohne dass permanente Zugriffsschlüssel verwendet werden müssen. Rollen können auch von Benutzern innerhalb des gleichen Kontos angenommen werden, um temporäre Berechtigungen zu erhalten.

#### AWS-Konto Root Benutzer

Der AWS-Konto Root Benutzer ist die anfängliche Identität, die beim Erstellen eines AWS-Kontos erstellt wird. Der Root-Benutzer hat vollständigen Zugriff auf alle AWS-Services und Ressourcen im Konto. Es wird empfohlen, den Root-Benutzer nicht für alltägliche Aufgaben zu verwenden und stattdessen IAM-Benutzer mit eingeschränkten Zugriffsrechten zu erstellen.
IAM-Identitäten ermöglichen eine granulare Kontrolle über den Zugriff auf AWS-Ressourcen. Durch die Verwaltung von Benutzern, Gruppen und Rollen können Berechtigungen effektiv zugewiesen und überwacht werden. Es ist wichtig, die Zugriffsrechte sorgfältig zu konfigurieren und die Prinzipien des geringsten Privilegs anzuwenden, um die Sicherheit der AWS-Infrastruktur zu gewährleisten.

### Zugriffsverwaltung

AWS Identity and Access Management (IAM) ist ein Webservice, der dabei hilft, den Zugriff auf AWS-Ressourcen zu steuern. Wenn ein Auftraggeber eine Anforderung in AWS stellt, überprüft der AWS-Durchführungscode, ob der Auftraggeber authentifiziert (angemeldet) und autorisiert (d. h. über Berechtigungen verfügt) ist. Für die Zugriffsverwaltung in AWS erstellt man Richtlinien und fügt sie den IAM-Identitäten oder AWS-Ressourcen hinzu. Richtlinien sind JSON-Dokumente in AWS, die, angefügt an eine Identität oder Ressource, deren Berechtigungen definieren. Weitere Informationen zu diesen Richtlinienarten und ihrer Verwendung finden Sie unter Berechtigungen und Richtlinien in IAM.
Während der Autorisierung verwendet der AWS-Durchführungscode Werte aus dem Anforderungskontext, um nach übereinstimmenden Richtlinien zu suchen und zu bestimmen, ob die Anforderung zuzulassen oder zu verweigern ist.
Bei der Autorisierung überprüft man jede Richtlinie, die für den Kontext der Anforderung relevant ist. Wenn eine einzelne Richtlinie die Anforderung verweigert, wird die gesamte Anforderung von AWS verweigert und die Richtlinienauswertung wird beendet. Dies wird als explizite Zugriffsverweigerung bezeichnet. Da Anforderungen standardmäßig verweigert werden, autorisiert IAM eine Anforderung nur, wenn jeder Teil der Anforderung von den anwendbaren Richtlinien erlaubt wird.
Die Auswertungslogik für eine Anforderung in einem einzelnen Konto folgt diesen Regeln:
* Standardmäßig werden alle Anforderungen implizit verweigert. (Alternativ hat der Root-Benutzer des AWS-Kontos standardmäßig vollen Zugriff.)
* Eine explizite Zugriffserlaubnis in einer identitätsbasierten oder ressourcenbasierten Richtlinie hat Vorrang vor diesem Standardwert.
* Wenn eine Berechtigungsgrenze, eine Organizations-Service Control Policy (SCP) oder eine Sitzungsrichtlinie vorhanden ist, kann sie die Zugriffserlaubnis mit einer impliziten Zugriffsverweigerung überschreiben.
* Eine explizite Zugriffsverweigerung hat Vorrang vor jeder Zugriffserlaubnis in einer Richtlinie.
Nachdem die Anforderung authentifiziert und autorisiert wurde, genehmigt AWS die Anforderung. Wenn man eine Anforderung in einem anderen Konto stellt, muss eine Richtlinie in diesem Konto den Zugriff auf die Ressource erlauben. Darüber hinaus muss die IAM-Entität, die man zur Erstellung der Anforderung verwendet, eine identitätsbasierte Richtlinie haben, die die Anforderung zulässt.

### Sicherheit

Die Sicherheit in der Cloud hat bei AWS höchste Priorität. Als AWS-Kunde profitiert man von Rechenzentren und Netzwerkarchitekturen, die eingerichtet wurden, um die Anforderungen der anspruchsvollsten Organisationen im Bezug auf Sicherheit zu erfüllen.
Sicherheit ist eine gemeinsame Verantwortung zwischen AWS und dem Kunden.
Das Modell der geteilten Verantwortung beschreibt dies als Sicherheit der Cloud selbst und Sicherheit in der Cloud:

#### Sicherheit der Cloud selbst

AWS ist dafür verantwortlich, die Infrastruktur zu schützen, mit der AWS-Services in der AWS Cloud ausgeführt werden. AWS stellt außerdem Services bereit, die sicher genutzt werden können. Auditoren von Drittanbietern testen und überprüfen regelmäßig die Effektivität der Sicherheitsmaßnahmen im Rahmen der AWS-Compliance-Programme. Informationen zu den Compliance-Programmen, die für AWS Identity and Access Management (IAM) gelten, finden sich unter den zugelassenen AWS-Services im Rahmen des Compliance-Programms.

#### Sicherheit in der Cloud

Der Verantwortungsbereich des Kunden wird durch den AWS-Service bestimmt, den man verwendet. Man ist auch für andere Faktoren verantwortlich, einschließlich der Vertraulichkeit der Daten, den Anforderungen des Unternehmens und den geltenden Gesetzen und Vorschriften.