Einschränken des Zugriffs auf Parameter Store-Parameter mithilfe von IAM-Richtlinien - AWS Systems Manager

Einschränken des Zugriffs auf Parameter Store-Parameter mithilfe von IAM-Richtlinien

Sie schränken den Zugriff auf AWS Systems Manager-Parameter ein, indem Sie AWS Identity and Access Management (IAM) verwenden. Genauer gesagt können Sie IAM-Richtlinien erstellen, die den Zugriff auf die folgenden API-Operationen beschränken:

Wenn Sie IAM-Richtlinien verwenden, um den Zugriff auf Systems Manager-Parameter einzuschränken, sollten Sie restriktive IAM-Richtlinien erstellen und verwenden. Die folgende Richtlinie ermöglicht z. B. den Aufruf der API-Operationen DescribeParameters und GetParameters für einen eingeschränkten Satz von Ressourcen. Das bedeutet, dass der Benutzer Informationen zu allen Parametern, die mit prod-* beginnen, abrufen und diese verwenden kann.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:DescribeParameters" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:GetParameters" ], "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/prod-*" } ] }
Wichtig

Wenn ein Benutzer Zugriff auf einen Pfad hat, kann er auf alle Ebenen dieses Pfads zugreifen. Wenn ein Benutzer beispielsweise die Berechtigung für den Zugriff auf den Pfad /a besitzt, dann kann er auch auf /a/b zugreifen. Selbst wenn einem Benutzer in IAM der Zugriff auf den Parameter /a/b ausdrücklich verweigert wurde, kann er dennoch die GetParametersByPath-API-Operation rekursiv für /a aufrufen und /a/b anzeigen.

Vertrauenswürdigen Administratoren können Sie mithilfe einer Richtlinie ähnlich dem folgenden Beispiel Zugriff auf alle API-Operationen für Systems Manager-Parameter gewähren. Mit dieser Richtlinie erhält der Benutzer vollen Zugriff auf alle Produktionsparameter, die mit dbserver-prod-* beginnen.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:PutParameter", "ssm:DeleteParameter", "ssm:GetParameterHistory", "ssm:GetParametersByPath", "ssm:GetParameters", "ssm:GetParameter", "ssm:DeleteParameters" ], "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/dbserver-prod-*" }, { "Effect": "Allow", "Action": "ssm:DescribeParameters", "Resource": "*" } ] }

Verweigern von Berechtigungen

Jede API ist einzigartig und verfügt über unterschiedliche Operationen und Berechtigungen, die Sie einzeln zulassen oder verweigern können. Eine explizite Zugriffsverweigerung überschreibt jede Zugriffserlaubnis in einer Richtlinie.

Anmerkung

Der AWS Key Management Service (AWS KMS)-Standardschlüssel hat Decrypt-Berechtigung für alle IAM-Prinzipale innerhalb des AWS-Konto. Wenn Sie unterschiedliche Zugriffsebenen für SecureString-Parameter in Ihrem Konto haben möchten, raten wir Ihnen davon ab, den Standardschlüssel zu verwenden.

Wenn Sie möchten, dass alle API-Operationen, die Parameterwerte abrufen, das gleiche Verhalten haben, dann können Sie ein Muster wie GetParameter* in einer Richtlinie verwenden. Im folgenden Beispiel wird gezeigt, wie Sie GetParameter, GetParameters, GetParameterHistory und GetParametersByPath für alle Parameter, die mit prod-* beginnen, verweigern.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "ssm:GetParameter*" ], "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/prod-*" } ] }

Das folgende Beispiel zeigt, wie einige Befehle verweigert werden, während der Benutzer andere Befehle für alle Parameter ausführen kann, die mit prod-* beginnen.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "ssm:PutParameter", "ssm:DeleteParameter", "ssm:DeleteParameters", "ssm:DescribeParameters" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:GetParametersByPath", "ssm:GetParameters", "ssm:GetParameter", "ssm:GetParameterHistory" ], "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/prod-*" } ] }
Anmerkung

Der Parameterverlauf umfasst alle Parameterversionen, einschließlich der aktuellen. Wenn einem Benutzer daher die Berechtigung für GetParameter, GetParameters und GetParameterByPath nicht gewährt wird, er aber die Berechtigung für GetParameterHistory erhält, kann er den aktuellen Parameter, einschließlich SecureString, unter Verwnedung von GetParameterHistory sehen.

Erlauben nur bestimmter Parameter für die Ausführung auf Knoten

Sie können den Zugriff so steuern, dass verwaltete Knoten nur von Ihnen angegebene Parameter ausführen können.

Wenn Sie beim Erstellen Ihres Parameters den Parametertyp SecureString auswählen, verwendet Systems Manager zum Verschlüsseln des Parameterwerts AWS KMS. AWS KMS verschlüsselt den Wert entweder mit einem von Von AWS verwalteter Schlüssel oder vom Kunden verwalteten Schlüssel. Weitere Informationen zu AWS KMS und AWS KMS key finden Sie im AWS Key Management Service-Entwicklerhandbuch.

Sie können den Von AWS verwalteter Schlüssel anzeigen, indem Sie den folgenden Befehl über die AWS CLI ausführen:

aws kms describe-key --key-id alias/aws/ssm

Im folgenden Beispiel dürfen Knoten einen Parameterwert nur für Parameter abrufen, die mit prod- beginnen. Wenn der Parameter ein SecureString-Parameter ist, entschlüsselt der Knoten die Zeichenfolge mit AWS KMS.

Anmerkung

Instance-Richtlinien wie im folgenden Beispiel werden der Instance-Rolle in IAM zugeordnet. Weitere Informationen zur Konfiguration des Zugriffs auf Systems Manager-Funktionen einschließlich einer Anleitung für die Zuweisung von Richtlinien für Benutzer und Instances finden Sie unter Verwalten von EC2-Instances mit Systems Manager.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameters" ], "Resource": [ "arn:aws:ssm:us-east-2:123456789012:parameter/prod-*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-east-2:123456789012:key/4914ec06-e888-4ea5-a371-5b88eEXAMPLE" ] } ] }

IAM-Berechtigungen für die Verwendung von AWS-Standardschlüsseln und kundenverwalteten Schlüsseln

Parameter Store SecureString-Parameter werden mit AWS KMS-Schlüsseln verschlüsselt und entschlüsselt. Sie können Ihre SecureString-Parameter mit einem AWS KMS key oder mit dem von AWS bereitgestellten KMS-Standardschlüssel verschlüsseln.

Wenn Sie einen kundenverwalteten Schlüssel verwenden, muss die IAM-Richtlinie, die einem Benutzer Zugriff auf einen Parameter oder Parameterpfad erteilt, explizite kms:Encrypt-Berechtigungen für den Schlüssel bereitstellen. Die folgende Richtlinie ermöglicht einem Benutzer beispielsweise das Erstellen, Aktualisieren und Anzeigen von SecureString-Parametern, die mit prod- beginnen, in der angegebenen AWS-Region und im angegebenen AWS-Konto.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:PutParameter", "ssm:GetParameter", "ssm:GetParameters" ], "Resource": [ "arn:aws:ssm:us-east-2:111122223333:parameter/prod-*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey" Footnote callout 1 to explain a line in a JSON policy ], "Resource": [ "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-12345EXAMPLE" ] } ] }

1Um verschlüsselte erweiterte Parameter mit dem angegebenen kundenverwalteten Schlüssel zu erstellen, ist die Berechtigung kms:GenerateDataKey erforderlich.

Im Gegensatz hierzu haben alle Benutzer innerhalb des Kundenkontos Zugriff auf den standardmäßigen AWS-verwalteten Schlüssel. Wenn Sie diesen Standardschlüssel zum Verschlüsseln von SecureString-Parametern verwenden und nicht möchten, dass Benutzer mit SecureString-Parametern arbeiten, müssen ihre IAM-Richtlinien den Zugriff auf den Standardschlüssel ausdrücklich ablehnen, wie im folgenden Richtlinienbeispiel gezeigt.

Anmerkung

Sie finden den Amazon-Ressourcennamen (ARN) des Standardschlüssels in der AWS KMS-Konsole auf der Seite AWS-verwaltete Schlüssel. Der Standardschlüssel ist der Schlüssel, der mit aws/ssm in der Spalte Alias (Alias) identifiziert wird.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:us-east-2:111122223333:key/abcd1234-ab12-cd34-ef56-abcdeEXAMPLE" ] } ] }

Wenn Sie in Bezug auf die SecureString-Parameter in Ihrem Konto eine granulare Zugriffskontrolle benötigen, sollten Sie einen kundenverwalteten Schlüssel verwenden, um den Zugriff auf diese Parameter zu schützen und einzuschränken. Darüber hinaus sollten Sie AWS CloudTrail verwenden, um SecureString-Parameteraktivitäten zu überwachen.

Weitere Informationen finden Sie unter den folgenden Themen: