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" ], "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üsselaws/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:
-
Auswertungslogik für Richtlinien im IAM-Benutzerhandbuch
-
Verwenden von Schlüsselrichtlinien in AWS KMS im AWS Key Management Service-Benutzerhandbuch
-
Anzeigen von Ereignissen mit dem CloudTrail-Ereignisverlauf im AWS CloudTrail-Benutzerhandbuch