Was ist die PassRole-Berechtigung in AWS und wie verwendet man sie?
Ein IAM-Service wird von vielen Cloud-Service-Anbietern als Maßnahme zur Kontrolle des Zugangs zu Cloud-Ressourcen angeboten. Er bestimmt, wer authentifiziert und autorisiert ist, auf diese Ressourcen zuzugreifen. AWS IAM-Identitäten bestehen aus Benutzern, Gruppen und Rollen.
In diesem Leitfaden werden wir uns speziell auf IAM-Rollen konzentrieren. Diese IAM-Identität ist genau wie ein IAM-Benutzer in dem Sinne, dass wir ihr IAM-Richtlinien zuordnen können. Diese Richtlinien bestimmen den Umfang der Berechtigungsstufe für diese Identität. Im Gegensatz zu einem IAM-Benutzer, der mit einem einzelnen Benutzer verknüpft ist und über langfristige Zugangsdaten verfügt, verfolgen Rollen eine andere Strategie. Sie haben temporäre Sicherheitsberechtigungen und werden von anderen übernommen, die sie benötigen. Normale Benutzer, Anwendungen oder Dienste, die keine Zugriffsrechte auf deine AWS-Ressourcen haben, übernehmen die Rollen, um diesen Zugriff zu erhalten.
Was werden wir hier sehen?
In diesem Lernprogramm lernst du, wie du die Berechtigung „IAM Passrole“ nutzen kannst. Außerdem zeigen wir dir ein einfaches Beispiel, wie du mit diesem Konzept eine EC2-Instanz mit einem privaten S3-Bucket verbinden kannst.
Was ist die Passrole-Berechtigung?
Bei der Konfiguration vieler AWS-Services muss der Benutzer/Administrator dem jeweiligen Service eine Rolle zuweisen. Der Service nimmt dann diese Rolle an, um die Aktionen durchzuführen, die in dieser Rolle erlaubt sind. In den meisten Fällen wird die Rolle nur einmal bei der Einrichtung des Service an den Service übergeben und nicht jedes Mal, wenn die Rolle vom Service übernommen wird.
Ein Nutzer muss Rechte haben, um eine Rolle an einen Dienst zu übergeben. Dies ist ein starker Sicherheitsaspekt, da nur autorisierte Nutzer/innen eine Rolle an einen Dienst weitergeben dürfen. Außerdem können die Administratoren kontrollieren, welche Art von Rolle ein Benutzer an einen Dienst weitergeben kann.
Demonstration der Passrole-Berechtigung
Wir wollen dieses Konzept anhand eines praktischen Beispiels erläutern. In dieser Demonstration haben wir einen S3-Bucket, eine EC2-Instanz und eine Anwendung, die auf dieser Instanz läuft, nämlich AWS CLI selbst. Wir möchten eine Rolle konfigurieren, die es unserer Anwendung auf der EC2-Instanz ermöglicht, auf unseren S3-Bucket zuzugreifen. Wir müssen die Rolle so einrichten, dass nur die EC2-Instanz die Berechtigung erhält, auf S3 zuzugreifen, aber kein anderer AWS-Service des Benutzers. Zu diesem Zweck sollte unsere Anwendung temporäre Anmeldedaten für die Authentifizierung und Autorisierung für den Zugriff auf S3 haben. Du wirst bemerkt haben, dass wir beim Starten der EC2-Instanz aufgefordert werden, eine IAM-Rolle auszuwählen, die unserer EC2-Instanz diese temporären Zugangsdaten zur Verfügung stellt. Unsere Anwendung, die auf der EC2-Instanz läuft, ruft diese Anmeldedaten ab, um auf den S3-Bucket zuzugreifen.
Ein IAM-Benutzer kann dem EC2-Dienst zum Zeitpunkt des Starts der Instanz eine Rolle übergeben, indem er die folgenden drei Elemente verwendet:
- Zunächst müssen wir eine Richtlinie erstellen und unserer Rolle zuordnen, die die Berechtigungsgrenze oder den Geltungsbereich unserer IAM-Rolle festlegt.
- Als Nächstes wird eine Vertrauensrichtlinie mit dieser Rolle verknüpft, die es dem AWS-Service (in unserem Fall EC2) erlaubt, die Rolle zu übernehmen und die mit der Rolle verbundenen Berechtigungen zu nutzen.
- Schließlich eine IAM-Berechtigungsrichtlinie, die mit dem IAM-Benutzer verknüpft ist und ihm erlaubt, die Rollen weiterzugeben, zu denen er berechtigt ist.
Erstellen der Rolle
In diesem Abschnitt erstellen wir eine Rolle mit dem Namen „EC2S3Access“ und fügen ihr die Richtlinie „AmazonS3ReadOnlyAccess“ zu:
Schritt 1. Rufe das IAM-Dashboard mit dem Administrator- oder Root-Konto auf und wähle „Rollen“ unter der Option Zugriffsverwaltung. Klicke auf die Schaltfläche „Rolle erstellen“.
Schritt 2. Im Abschnitt „Vertrauenswürdige Entität auswählen“ siehst du die Optionen „Typ der vertrauenswürdigen Entität“ und „Anwendungsfall“. Wähle im ersten Fall die Option „AWS Service“ und im zweiten Fall die Option „EC2“.
Schritt 3. Im nächsten Abschnitt „Berechtigungen hinzufügen“ fügst du eine Richtlinie „S3ReadOnlyAccess“ hinzu und klickst dann auf „Weiter“:
Schritt 4. Hier gibst du einen Namen für die Rolle ein: „EC2S3Access“ und eine optionale Beschreibung für sie. Beachte, dass eine Vertrauensrichtlinie automatisch mit dieser Rolle verknüpft wird:
{
„Version“: „2012-10-17“,
„Statement“: [
{
„Wirkung“: „Erlauben“,
„Action“: [
„sts:AssumeRole“
],
„Principal“: {
„Service“: [
„ec2.amazonaws.com“
]
}
}
]
}
Schritt 5. Klicke schließlich auf die Schaltfläche „Rolle erstellen“, um die oben genannte Rolle zu erstellen:
Hinzufügen einer IAM-Richtlinie für den IAM-Benutzer
Bisher haben wir eine Rolle erstellt und ihr eine Richtlinie zugewiesen und eine vertrauenswürdige Richtlinie erstellt. Jetzt werden wir eine Richtlinie für den IAM-Benutzer selbst erstellen. In dieser Richtlinie geben wir dem Benutzer die Berechtigung für den vollen EC2-Zugriff und für die Verknüpfung der oben genannten Rolle „EC2S3Access“ mit unserer EC2-Instanz.
Schritt 1. Gehe wieder vom Administrator- oder Root-Konto zum IAM-Dashboard, wähle „Richtlinien“ und klicke auf die Schaltfläche „Richtlinie erstellen“.
Schritt 2. Im Assistenten zum Erstellen von Richtlinien klickst du auf die Registerkarte json und fügst einfach den folgenden json-Code für diese Richtlinie ein:
{
„Version“: „2012-10-17“,
„Statement“: [{
„Effect“: „Allow“,
„Action“:[„ec2:*“],
„Resource“: „*“
},
{
„Effect“: „Allow“,
„Action“: „iam:PassRole“,
„Resource“: „arn:aws:iam::IAM_User_ID:role/EC2S3Access“
}]
}
Ersetze in diesem Code „IAM_User_ID“ durch die Kontonummer oder ID des IAM-Benutzers und „EC2S3Access“ durch den Namen der Rolle in deinem Fall. Klicke auf ‚Weiter:Tags‘.
Schritt 3. Gib alle optionalen „Tags“ an, die du verwenden möchtest, und klicke auf „Weiter:Überprüfen“:
Schritt 4. Gib einen Namen für die Richtlinie ein (in unserem Fall „iam_user_policy“) und klicke abschließend auf „Richtlinie erstellen“, um die Richtlinie zu erstellen:
Schritt 5. Verknüpfe die oben erstellte Richtlinie mit dem IAM-Benutzer:
Anhängen der Rolle an die Instanz
Da unsere Rolle fertig ist und der IAM-Benutzer mit der erforderlichen Richtlinie verknüpft wurde, ist es nun an der Zeit, diese Rolle („EC2S3Access“) der EC2-Instanz zuzuordnen.
Hinweis: Eine Rolle kann einer Instanz zugewiesen werden, während sie gestartet wird, und auch einer laufenden Instanz.
In unserem Fall ist die EC2-Instanz bereits in Betrieb, also navigiere zur EC2-Konsole und wähle die Zielinstanz aus. Wähle „Action > Security > Modify IAM role“. Wähle die Option „EC2S3Access“ aus dem Dropdown-Menü auf der neuen Seite und klicke auf „Speichern“, um fortzufahren:
Testen der Einrichtung
Wenn alles richtig eingerichtet wurde, sollte unsere EC2-Instanz auf einen S3-Bucket zugreifen können. Erstelle zunächst einen S3-Bucket über das Administratorkonto. Melde dich bei der Ziel-EC2-Instanz an und installiere und konfiguriere die aws cli-Anwendung für den IAM-Benutzer mit der Richtlinie „user-iam-policy“. Führe in einem Terminal auf der Instanz den folgenden Befehl zum Auflisten von S3 aus:
$ aws s3 ls
Um zu überprüfen, ob die Passrole-Berechtigung funktioniert, führe denselben Befehl mit demselben IAM-Benutzer auf einem anderen Rechner aus. Dieses Mal wirst du hoffentlich feststellen, dass wir eine Fehlermeldung über die Erreichbarkeit aufgrund eingeschränkter Rechte erhalten:
Der obige Fehler ist aufgetreten, weil wir nur der EC2-Instanz, die mit der „iam_user_policy“ konfiguriert ist, die Zugriffsberechtigung für S3 gegeben haben, aber keine solche Berechtigung für einen anderen AWS-Service des IAM-Benutzers.
Hinweis:Der Bucket und seine Objekte sind nicht öffentlich zugänglich.
Fazit
In diesem Leitfaden haben wir gelernt, wie man die PassRole-Berechtigung verwendet, um einem AWS IAM-Benutzer das geringste Recht zu geben. Wir haben dir gezeigt, wie du eine EC2-Instanz mit einem S3-Bucket verbinden kannst.