사용자에게 Lambda 함수에 대한 액세스 권한 부여 - AWS Lambda

사용자에게 Lambda 함수에 대한 액세스 권한 부여

자격 증명 기반 정책을 사용하여 사용자, 사용자 그룹 또는 역할이 Lambda 함수에서 작업을 실행할 수 있도록 허용합니다.

참고

컨테이너 이미지로 정의된 함수의 경우, 이미지에 액세스할 수 있는 사용자 권한은 Amazon Elastic Container Registry(Amazon ECR)에서 구성해야 합니다. 예시는 Amazon ECR 리포지토리 정책을 참조하세요.

다음은 범위를 제한한 권한 정책의 예입니다. 사용자가 지정된 접두사(intern-)로 이름이 지정되고 지정된 실행 역할로 구성된 Lambda 함수를 생성하고 관리할 수 있도록 허용합니다.

예 함수 개발 정책
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadOnlyPermissions", "Effect": "Allow", "Action": [ "lambda:GetAccountSettings", "lambda:GetEventSourceMapping", "lambda:GetFunction", "lambda:GetFunctionConfiguration", "lambda:GetFunctionCodeSigningConfig", "lambda:GetFunctionConcurrency", "lambda:ListEventSourceMappings", "lambda:ListFunctions", "lambda:ListTags", "iam:ListRoles" ], "Resource": "*" }, { "Sid": "DevelopFunctions", "Effect": "Allow", "NotAction": [ "lambda:AddPermission", "lambda:PutFunctionConcurrency" ], "Resource": "arn:aws:lambda:*:*:function:intern-*" }, { "Sid": "DevelopEventSourceMappings", "Effect": "Allow", "Action": [ "lambda:DeleteEventSourceMapping", "lambda:UpdateEventSourceMapping", "lambda:CreateEventSourceMapping" ], "Resource": "*", "Condition": { "StringLike": { "lambda:FunctionArn": "arn:aws:lambda:*:*:function:intern-*" } } }, { "Sid": "PassExecutionRole", "Effect": "Allow", "Action": [ "iam:ListRolePolicies", "iam:ListAttachedRolePolicies", "iam:GetRole", "iam:GetRolePolicy", "iam:PassRole", "iam:SimulatePrincipalPolicy" ], "Resource": "arn:aws:iam::*:role/intern-lambda-execution-role" }, { "Sid": "ViewLogs", "Effect": "Allow", "Action": [ "logs:*" ], "Resource": "arn:aws:logs:*:*:log-group:/aws/lambda/intern-*" } ] }

정책의 권한은 구문이 지원하는 리소스 및 조건에 따라 구문으로 구성됩니다.

  • ReadOnlyPermissions – 찾아보기 및 보기 기능을 사용할 때 Lambda 콘솔은 이러한 권한을 사용합니다. 이들 권한은 리소스 패턴 또는 조건을 지원하지 않습니다.

    "Action": [ "lambda:GetAccountSettings", "lambda:GetEventSourceMapping", "lambda:GetFunction", "lambda:GetFunctionConfiguration", "lambda:GetFunctionCodeSigningConfig", "lambda:GetFunctionConcurrency", "lambda:ListEventSourceMappings", "lambda:ListFunctions", "lambda:ListTags", "iam:ListRoles" ], "Resource": "*"
  • DevelopFunctionsAddPermissionPutFunctionConcurrency를 제외하고 intern-으로 접두사가 지정된 함수에서 작동하는 모든 Lambda 작업을 사용합니다. AddPermission은 함수에 대한 리소스 기반 정책을 수정하여 보안에 영향을 줄 수 있습니다. PutFunctionConcurrency는 함수에 대한 규모 조정 용량을 예약하여 다른 함수로부터 용량을 가져올 수 있습니다.

    "NotAction": [ "lambda:AddPermission", "lambda:PutFunctionConcurrency" ], "Resource": "arn:aws:lambda:*:*:function:intern-*"
  • DevelopEventSourceMappings - intern-으로 접두사가 지정된 함수에 대한 이벤트 소스 매핑을 관리합니다. 이러한 작업은 이벤트 소스 매핑에 대해 작용하지만 조건과 함께 함수를 제한할 수 있습니다.

    "Action": [ "lambda:DeleteEventSourceMapping", "lambda:UpdateEventSourceMapping", "lambda:CreateEventSourceMapping" ], "Resource": "*", "Condition": { "StringLike": { "lambda:FunctionArn": "arn:aws:lambda:*:*:function:intern-*" } }
  • PassExecutionRole – IAM 권한을 가진 사용자가 생성하고 관리해야 하는 intern-lambda-execution-role이라는 역할만 조회하고 전달합니다. 함수에 실행 역할을 할당할 경우 PassRole이 사용됩니다.

    "Action": [ "iam:ListRolePolicies", "iam:ListAttachedRolePolicies", "iam:GetRole", "iam:GetRolePolicy", "iam:PassRole", "iam:SimulatePrincipalPolicy" ], "Resource": "arn:aws:iam::*:role/intern-lambda-execution-role"
  • ViewLogs – CloudWatch Logs를 사용하여, intern-으로 접두사가 지정된 함수에 대한 로그를 조회합니다.

    "Action": [ "logs:*" ], "Resource": "arn:aws:logs:*:*:log-group:/aws/lambda/intern-*"

이 정책은 사용자가 다른 사용자의 리소스를 위험하게 만들지 않고 Lambda를 시작할 수 있도록 합니다. 사용자가 더 광범위한 IAM 권한이 필요한 다른 AWS 서비스에 의해 트리거되는 기능을 구성하거나 호출하는 것은 허용하지 않습니다. 또한 CloudWatch 및 X-Ray와 같이 범위 제한 정책을 지원하지 않는 서비스에 대한 권한은 포함하지 않습니다. 사용자에게 지표 및 추적 데이터에 대한 액세스 권한을 부여하려면 이러한 서비스에 대해 읽기 전용 정책을 사용합니다.

함수에 대한 트리거를 구성할 경우 해당 함수를 호출하는 AWS 서비스를 사용하기 위한 액세스 권한이 필요합니다. 예를 들어, Amazon S3 트리거를 구성하려면 버킷 알림을 관리하는 Amazon S3 작업을 사용할 수 있는 권한이 필요합니다. 이러한 권한 중 다수는 AWSLambda_FullAccess 관리형 정책에 포함됩니다.