Wie kann ich den Zugriff auf Lambda-Funktionen granular gewähren?
Ich möchte Lese- und Schreibzugriff auf eine bestimmte AWS Lambda-Funktion gewähren, die durch ihren Amazon-Ressourcennamen (ARN) identifiziert wird. Wie kann ich den Zugriff auf Lambda-Funktionen granular gewähren?
Kurzbeschreibung
Sie können die Berechtigungen für Lambda-Funktionen mithilfe von AWS Identity and Access Management (IAM)-RIchtlinien konfigurieren, um:
- Erstellen einer Lambda-Funktion
- Löschen einer Lambda-Funktion
- Anzeigen der Konfigurationsdetails einer Lambda-Funktion
- Modifizieren einer Lambda-Funktion
- Aufrufen einer Lambda-Funktion
- Eine Lambda-Funktion überwachen
In den folgenden Richtlinienbeispielen sind Lambda-API-Aktionen, die Berechtigungen auf Ressourcenebene unterstützen, auf eine bestimmte Lambda-Funktion beschränkt, die im ****Resourcenelement der jeweiligen Anweisung aufgeführt ist. Ein spezifischer Funktionsname wird im ****Bedingungselement für API-Aktionen verwendet, die diese Elemente unterstützen.
API-Aktionen, die keine Berechtigungen auf Ressourcenebene unterstützen, erfordern einen Platzhalter (“*** **„) im ****Resourcenelement und können keine Lambda-Service-spezifischen Bedingungsschlüssel anwenden. Weitere Informationen zu IAM-Aktionen, Ressourcen und Bedingungen, die von Lambda unterstützt werden, finden Sie unter Aktionen, Ressourcen und Bedingungsschlüssel für AWS Lambda.
Der Wert des ****Resourcenelements einer Anweisung verwendet die ARN, um die Ressourcen zu identifizieren, für die diese Anweisung gilt. Wenn die Aktion zum Beispiel Invoke lautet, ist die Ressource eine Funktions-ARN. IAM gleicht diese ARN mit der ARN der Funktion ab, die durch die Parameter FunctionName und Qualifier einer Invoke-Anforderung identifiziert wird. Weitere Informationen finden Sie unter AWS Lambda-Funktionsversionen.
Hinweis: Wenn Sie mehrere Versionen und Aliasname verwenden, müssen Sie möglicherweise „arn:aws:lambda:region:accountID:Function:Function_name:*“ in das Ressourcenelement aufnehmen.
Behebung
Erforderliche Berechtigungen zum Erstellen einer Lambda-Funktion
Hinweis: Wenn Sie beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste AWS CLI-Version verwenden.
Zum Erstellen einer Lambda-Funktion über die AWS-Command Line Interface (AWS CLI) oder ein SDK sind die beiden Berechtigung Lambda:createFunction und iam:PassRole erforderlich. Beispiele für Richtlinien finden Sie unter Identitätsbasierte IAM-Richtlinien für AWS Lambda. Die folgende Richtlinie ermöglicht es dem API-Aufrufer, eine Lambda-Funktion zu erstellen, die IAM-Rolle als Lambda-Ausführungsrolle für die Funktion zu übergeben und dann den Code von Ihrem lokalen Computer hochzuladen:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PermissionToCreateFunction", "Effect": "Allow", "Action": [ "lambda:CreateFunction" ], "Resource": [ "arn:aws:lambda:region:AccountID:function:function_name" ] }, { "Sid": "PermissionToPassARole", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::AccountID:role/role_name" } ] }
Hinweis: Aktualisieren Sie die Richtlinie so, dass sie Ihre relevante Region, Konto-ID, Funktionsname, ARN usw. enthält.
Wenn Sie den Code von einem Amazon Simple Storage Service (Amazon S3)-Bucket hochladen, fügen Sie der vorhandenen IAM-Richtlinie eine Richtlinie ähnlich der folgenden hinzu, um die erforderlichen Berechtigungen für Amazon S3 zu gewähren:
... { "Sid": "PermissionToUploadCodeFromS3", "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::S3BucketName/FileName.zip" } ...
Hinweis: Aktualisieren Sie die Richtlinie, um Ihre relevanten S3-Bucket und Dateinamen enthält.
Da der Code nicht bereitgestellt werden kann, wenn die Funktion in der Lambda-Konsole erstellt wird, sind API-Berechtigungen erforderlich, z.B. API-Aktionen auf Leseebene und die Berechtigung zum Anzeigen und Aktualisieren der Funktion. Fügen Sie eine Richtlinie ähnlich der folgenden hinzu, um diese Berechtigungen zu gewähren:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PermissionsToViewFunctionsInConsole", "Effect": "Allow", "Action": [ "lambda:ListFunctions", "lambda:GetAccountSettings" ], "Resource": "*" }, { "Sid": "PermissionsToCreateAndUpdateFunction", "Effect": "Allow", "Action": [ "lambda:CreateFunction", "lambda:GetFunction", "lambda:UpdateFunctionCode" ], "Resource": [ "arn:aws:lambda:region:AccountID:function:function_name" ] }, { "Sid": "PermissionToListExistingRoles", "Effect": "Allow", "Action": [ "iam:ListRoles" ], "Resource": "*" }, { "Sid": "PermissionToPassARole", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::AccountID:role/role_name" } ] }
Hinweis: Aktualisieren Sie die Richtlinie so, dass sie Ihre relevante Region, Konto-ID, Funktionsname, ARN usw. enthält.
Um eine IAM-Rolle während des Erstellungsprozesses der Lambda-Funktion zu erstellen, fügen Sie zusätzliche IAM-Berechtigungen ähnlich wie die folgenden hinzu:
... { "Sid": "PermmissionsToCreateAndUpdateARole", "Effect": "Allow", "Action": [ "iam:CreateRole", "iam:CreatePolicy", "iam:PutRolePolicy", "iam:AttachRolePolicy" ], "Resource": "*" } ...
Erforderliche Berechtigungen zum Löschen einer Lambda-Funktion
Um eine Lambda-Funktion über die AWS-CLI oder ein SDK zu löschen, fügen Sie Berechtigungen ähnlich der folgenden hinzu:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PermissionToDeleteFunction", "Effect": "Allow", "Action": [ "lambda:DeleteFunction" ], "Resource": [ "arn:aws:lambda:region:AccountID:function:function_name" ] } ] }
Hinweis: Aktualisieren Sie die Richtlinie so, dass sie Ihre relevante Region, Konto-ID, Funktionsname, ARN usw. enthält.
Um eine Lambda-Funktion über die Lambda-Konsole zu löschen, fügen Sie Lambda-Lesezugriffsberechtigungen ähnlich der folgenden hinzu:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PermissionsToViewFunctionsInConsole", "Effect": "Allow", "Action": [ "lambda:ListFunctions", "lambda:GetAccountSettings" ], "Resource": "*" }, { "Sid": "PermissionToDeleteFunction", "Effect": "Allow", "Action": [ "lambda:DeleteFunction" ], "Resource": [ "arn:aws:lambda:region:AccountID:function:function_name" ] } ] }
Hinweis: Aktualisieren Sie die Richtlinie so, dass sie Ihre relevante Region, Konto-ID, Funktionsname, ARN usw. enthält.
Erforderliche Berechtigungen zum Anzeigen der Konfigurationsdetails einer Lambda-Funktion
Um einem Benutzer die Berechtigung zum Anzeigen der Konfigurationsdetails einer Lambda-Funktion zu erteilen, fügen Sie Berechtigungen ähnlich der folgenden hinzu:
Hinweis: Je nach dem Grad des Lesezugriffs, den Sie gewähren möchten, müssen Sie möglicherweise alle oder eine Teilmenge der folgenden Berechtigungen gewähren, wenn Sie die AWS CLI oder ein SDK verwenden.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ActionsWhichSupportResourceLevelPermissions", "Effect": "Allow", "Action": [ "lambda:GetFunction", "lambda:GetFunctionConfiguration", "lambda:GetPolicy", "lambda:GetAlias", "lambda:ListVersionsByFunction", "lambda:ListAliases" ], "Resource": [ "arn:aws:lambda:region:AccountID:function:function_name" ] }, { "Sid": "ActionsWhichDoNotSupportResourceLevelPermissions", "Effect": "Allow", "Action": [ "lambda:ListTags", "lambda:GetEventSourceMapping", "lambda:ListEventSourceMappings" ], "Resource": "*" } ] }
Hinweis: Aktualisieren Sie die Richtlinie so, dass sie Ihre relevante Region, Konto-ID, Funktionsname, ARN usw. enthält.
Um die Konfigurationsdetails einer Funktion mithilfe der Lambda-Konsole anzuzeigen, fügen Sie Berechtigungen wie die folgenden hinzu:
... { "Sid": "PermissionsToViewFunctionsInConsole", "Effect": "Allow", "Action": [ "lambda:ListFunctions", "lambda:GetAccountSettings" ], "Resource": "*" } ...
Die Lambda-Konsole verwendet das Tagging von Lambda-Funktionen, so dass Sie Lambda-Funktionen nach Tags filtern können. Um den AWS Tagging Service zu nutzen, fügen Sie Berechtigungen wie die folgenden hinzu:
... { "Sid": "PermissionsToFilterFunctionsByTags", "Effect": "Allow", "Action": [ "tag:GetResources" ], "Resource": "*" } ...
Die Lambda-Konsole zeigt Details über die IAM-Rolle an, die mit einer Lambda-Funktion verknüpft ist, sowie über die Ressourcen, auf die diese IAM-Rolle der Funktion Zugriff hat. Um diese Details anzuzeigen, fügen Sie Berechtigungen wie die folgenden hinzu:
... { "Sid": "PermissionsToViewRolesAndPolicies", "Effect": "Allow", "Action": [ "iam:GetPolicy", "iam:GetPolicyVersion", "iam:GetRolePolicy", "iam:ListRoles", "iam:ListRolePolicies", "iam:ListAttachedRolePolicies" ], "Resource": "*" } ...
Hinweis: Je nach Ihren Anforderungen und den in Ihre Lambda-Funktion integrierten Services müssen Sie möglicherweise zusätzliche Berechtigungen für andere AWS-Services erteilen. Weitere Informationen finden Sie unter AWS Lambda-Berechtigungen.
Erforderliche Berechtigungen zur Änderung einer Lambda-Funktion
Um einem Benutzer die Berechtigung zum Ändern einer Lambda-Funktion zu erteilen, fügen Sie Berechtigungen wie die folgenden hinzu:
Hinweis: Je nach dem Grad des Schreibzugriffs, den Sie gewähren möchten, müssen Sie möglicherweise alle oder eine Teilmenge der folgenden Berechtigungen gewähren, wenn Sie die AWS CLI oder ein SDK verwenden.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ActionsWhichSupportResourceLevelPermissions", "Effect": "Allow", "Action": [ "lambda:AddPermission", "lambda:RemovePermission", "lambda:CreateAlias", "lambda:UpdateAlias", "lambda:DeleteAlias", "lambda:UpdateFunctionCode", "lambda:UpdateFunctionConfiguration", "lambda:PutFunctionConcurrency", "lambda:DeleteFunctionConcurrency", "lambda:PublishVersion" ], "Resource": "arn:aws:lambda:region:AccountID:function:function_name" }, { "Sid": "ActionsWhichSupportCondition", "Effect": "Allow", "Action": [ "lambda:CreateEventSourceMapping", "lambda:UpdateEventSourceMapping", "lambda:DeleteEventSourceMapping" ], "Resource": "*", "Condition": { "StringEquals": { "lambda:FunctionArn": "arn:aws:lambda:region:AccountID:function:function_name" } } }, { "Sid": "ActionsWhichDoNotSupportResourceLevelPermissions", "Effect": "Allow", "Action": [ "lambda:UntagResource", "lambda:TagResource" ], "Resource": "*" } ] }
Hinweis: Aktualisieren Sie die Richtlinie so, dass sie Ihre relevante Region, Konto-ID, Funktionsname, ARN usw. enthält.
Sie können den Zugriff mit lambda:addPermissionund lambda:removePermission auf einen Principal, der in einer übergebenen Richtlinie enthalten ist, weiter einschränken. Sie können lambda:UpdateEventSourceMapping und lambda:deleteEventSourceMapping auch auf eine bestimmte Ereignisquellenzuordnung beschränken. Weitere Informationen finden Sie unter Identitätsbasierte IAM-Richtlinien für AWS Lambda.
Um einen vom Kunden verwalteten AWS Key Management Service (AWS KMS)-Schlüssel zur Verschlüsselung von Umgebungsvariablen anzugeben, fügen Sie zusätzliche KMS-Berechtigungen hinzu, indem Sie ein IAM-Richtlinien-Snippet ähnlich dem folgenden verwenden:
... { "Sid": "PermissionsForCryptoOperations", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:CreateGrant" ], "Resource": "arn:aws:kms:region:AccountID:key/keyID" }, { "Sid": "PermissionsToListExistingKeys", "Effect": "Allow", "Action": [ "kms:ListKeys", "kms:ListAliases" ], "Resource": "*" } ...
Hinweis: Aktualisieren Sie die Richtlinie so, dass sie Ihre relevante Region, Konto-ID, Funktionsname, ARN usw. enthält.
Um die Konfigurationen einer Lambda-Funktion über die Lambda-Konsole zu ändern, fügen Sie Berechtigungen wie die folgenden hinzu:
... { "Sid": "PermissionsToViewFunctionsInConsole", "Effect": "Allow", "Action": [ "lambda:ListFunctions", "lambda:GetAccountSettings" ], "Resource": "*" } ...
Erforderliche Berechtigungen zum Aufrufen einer Lambda-Funktion
Um eine Lambda-Funktion zu Testzwecken manuell über die AWS CLI oder ein SDK aufzurufen, fügen Sie Berechtigungen wie die folgenden hinzu:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PermissionToInvoke", "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:region:AccountID:function:function_name" } ] }
Hinweis: Aktualisieren Sie die Richtlinie so, dass sie Ihre relevante Region, Konto-ID, Funktionsname, ARN usw. enthält.
Um Lambda-Funktionen mithilfe der Lambda-Konsole aufzulisten, fügen Sie Berechtigungen wie die folgenden hinzu:
... { "Sid": "PermissionsToViewFunctionsConfigInConsole", "Effect": "Allow", "Action": [ "lambda:ListFunctions", "lambda:GetAccountSettings", "lambda:GetFunction" ], "Resource": "*" } ...
Um anderen Services den Aufruf einer Lambda-Funktion zu ermöglichen, verwenden Sie ressourcenbasierte Richtlinien für AWS Lambda. Sie können Funktionsrichtlinien verwenden, um den kontoübergreifenden Zugriff auf Lambda-Funktionen ermöglichen. Die folgende Beispielrichtlinie kann verwendet werden, um einem Benutzer von einem anderen AWS-Konto zu erlauben, eine Lambda-Funktion manuell aufzurufen:
{ "Version": "2012-10-17", "Id": "default", "Statement": [ { "Sid": "PermissionToInvoke", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::ExternalAccountID:user/username" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:region:AccountID:function:function_name" } ] }
Hinweis: Aktualisieren Sie die Richtlinie so, dass sie Ihre relevante Region, Konto-ID, Funktionsname, ARN usw. enthält.
Für die Überwachung von Lambda-Funktionen erforderliche Berechtigungen
Um Amazon CloudWatch-Metriken in der ****Überwachungsansicht der Lambda-Konsole anzuzeigen, fügen Sie Berechtigungen wie die folgenden hinzu:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PermissionForCloudWatchMetrics", "Effect": "Allow", "Action": [ "cloudwatch:GetMetricStatistics", "cloudwatch:GetMetricData" ], "Resource": "*" } ] }
Um Berechtigungen für bestimmte CloudWatch-Metriken und CloudWatch Logs Insights zu erteilen, siehe Amazon CloudWatch-Berechtigungsreferenz und CloudWatch Logs-Berechtigungsreferenz.
Ähnliche Videos
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 3 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 3 Jahren
- AWS OFFICIALAktualisiert vor 5 Monaten