Lambda 작업에 사용되는 리소스 및 조건 - AWS Lambda

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Lambda 작업에 사용되는 리소스 및 조건

AWS Identity and Access Management(IAM) 정책에 리소스와 조건을 지정하여 사용자 권한의 범위를 제한할 수 있습니다. 정책에서 각각의 작업은 해당 작업의 동작에 따라 다양한 조합의 리소스와 조건을 지원합니다.

각 IAM 정책 구문은 리소스에 대해 수행되는 작업에 대한 권한을 부여합니다. 지명된 리소스에서 이루어지는 작업이 아니거나 모든 리소스에 대해 그 작업을 수행할 수 있도록 권한을 부여하는 경우, 정책에서 해당 리소스의 값은 와일드카드(*)가 됩니다. 대부분의 작업에서는 리소스의 Amazon 리소스 이름(ARN) 또는 복수의 리소스에 맞는 ARN 패턴을 지정함으로써 사용자 수정이 가능한 리소스를 제한할 수 있습니다.

리소스별 권한을 제한하려면 ARN으로 리소스를 지정하세요.

Lambda 리소스 ARN 형식
  • 함수 - arn:aws:lambda:us-west-2:123456789012:function:my-function

  • 함수 버전 - arn:aws:lambda:us-west-2:123456789012:function:my-function:1

  • 함수 별칭 - arn:aws:lambda:us-west-2:123456789012:function:my-function:TEST

  • 이벤트 소스 매핑 - arn:aws:lambda:us-west-2:123456789012:event-source-mapping:fa123456-14a1-4fd2-9fec-83de64ad683de6d47

  • 계층 - arn:aws:lambda:us-west-2:123456789012:layer:my-layer

  • 계층 버전 - arn:aws:lambda:us-west-2:123456789012:layer:my-layer:1

예를 들어 다음 정책을 통해 AWS 계정 123456789012 사용자는 미국 서부(오리건) AWS 리전에서 my-function이라는 함수를 호출할 수 있습니다.

예 함수 정책 호출
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Invoke", "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:us-west-2:123456789012:function:my-function" } ] }

이것은 작업 ID(lambda:InvokeFunction)가 API 작업(호출)과 다른 특수한 경우입니다. 다른 작업의 경우, 작업 이름 앞에 lambda:를 붙인 것이 작업 ID입니다.

정책 조건

조건이란 허용되는 작업인지 여부를 판단하기 위해 로직을 추가로 적용하는 선택적 정책 요소를 말합니다. 모든 작업에서 지원되는 일반 조건 외에, Lambda는 일부 작업에서 추가 파라미터 값을 제한하는 데 사용할 수 있는 조건 유형도 정의합니다.

예를 들어, lambda:Principal 조건으로는 사용자가 함수의 리소스 기반 정책에 대한 호출 액세스 권한을 부여할 수 있는 서비스 또는 계정을 제한합니다. 다음 정책에 따르면 사용자는 test 함수 호출 권한을 Amazon Simple Notification Service(SNS) 주제에 부여할 수 있습니다.

예 함수 정책 권한 관리
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageFunctionPolicy", "Effect": "Allow", "Action": [ "lambda:AddPermission", "lambda:RemovePermission" ], "Resource": "arn:aws:lambda:us-west-2:123456789012:function:test:*", "Condition": { "StringEquals": { "lambda:Principal": "sns.amazonaws.com" } } } ] }

이 조건은 보안 주체가 다른 서비스 또는 계정이 아닌 Amazon SNS여야 합니다. 리소스 패턴에 따르면 함수 이름은 test이고 버전 번호나 별칭이 포함되어야 합니다. 예: test:v1.

Lambda 및 기타 AWS 서비스의 리소스 및 조건에 대한 자세한 내용은 서비스 승인 참조에서 AWS 서비스에 사용되는 작업, 리소스 및 조건 키를 참조하세요.

함수 리소스 이름

Amazon 리소스 이름(ARN)을 사용하여 정책 설명에서 Lambda 함수를 참조합니다. 함수 ARN의 형식은 전체 함수를 참조(비정규화)하는지, 함수 버전 또는 별칭을 참조(정규화)하는지에 따라 다릅니다.

Lambda API를 호출할 때 사용자는 GetFunction FunctionName 파라미터의 버전 ARN 또는 별칭 ARN을 전달하거나 GetFunction Qualifier 파라미터의 값을 설정하여 버전 또는 별칭을 지정할 수 있습니다. Lambda는 IAM 정책의 리소스 요소와 API 호출로 전달된 FunctionNameQualifier를 비교하여 권한 부여를 결정합니다. 불일치가 있는 경우 Lambda는 요청을 거부합니다.

함수에 대한 작업을 허용하든지 거부하든지 간에 예상한 결과를 얻으려면 정책 설명에서 올바른 함수 ARN 유형을 사용해야 합니다. 예를 들어, 정책이 정규화되지 않은 ARN을 참조하는 경우 Lambda는 정규화되지 않은 ARN을 참조하는 요청을 수락하지만 정규화된 ARN을 참조하는 요청은 거부합니다.

참고

와일드카드 문자(*)를 사용하여 계정 ID와 일치시킬 수 없습니다. 허용되는 정책에 대한 자세한 내용은 IAM 사용 설명서IAM JSON 정책 참조를 참조하세요.

예 정규화되지 않은 ARN의 호출 허용
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction" } ] }

정책이 정규화된 특정 ARN을 참조하는 경우, Lambda는 해당 ARN을 참조하는 요청을 수락하지만 myFunction:2와 같이 정규화되지 않은 ARN 또는 정규화된 다른 ARN을 참조하는 요청은 거부합니다.

예 정규화된 특정 ARN의 호출 허용
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction:1" } ] }

정책이 :*를 사용하는 정규화된 ARN을 참조하는 경우, Lambda는 정규화된 모든 ARN을 수락하지만 정규화되지 않은 ARN을 참조하는 요청은 거부합니다.

예 정규화된 모든 ARN의 호출 허용
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction:*" } ] }

정책이 *를 사용하는 모든 ARN을 참조하는 경우, Lambda는 정규화된 ARN 또는 정규화되지 않은 ARN을 수락합니다.

예 정규화된 ARN 또는 정규화되지 않은 ARN의 호출 허용
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction*" } ] }

함수 작업

아래 표에 설명된 것과 같이, 함수에 대한 작업도 특정 함수에만 실행되도록 함수, 버전, 별칭 ARN 등으로 제한할 수 있습니다. 리소스 제한이 지원되지 않는 작업은 모든 리소스(*)를 대상으로 부여할 수 있습니다.

함수 작업
작업 리소스 Condition

AddPermission

RemovePermission

함수

함수 버전

함수 별칭

lambda:Principal

aws:ResourceTag/${TagKey}

lambda:FunctionUrlAuthType

Invoke

권한: lambda:InvokeFunction

함수

함수 버전

함수 별칭

aws:ResourceTag/${TagKey}

lambda:EventSourceToken

CreateFunction

함수

lambda:CodeSigningConfigArn

lambda:Layer

lambda:VpcIds

lambda:SubnetIds

lambda:SecurityGroupIds

aws:ResourceTag/${TagKey}

aws:RequestTag/${TagKey}

aws:TagKeys

UpdateFunctionConfiguration

함수

lambda:CodeSigningConfigArn

lambda:Layer

lambda:VpcIds

lambda:SubnetIds

lambda:SecurityGroupIds

aws:ResourceTag/${TagKey}

CreateAlias

DeleteAlias

DeleteFunction

DeleteFunctionCodeSigningConfig

DeleteFunctionConcurrency

GetAlias

GetFunction

GetFunctionCodeSigningConfig

GetFunctionConcurrency

GetFunctionConfiguration

GetPolicy

ListProvisionedConcurrencyConfigs

ListAliases

ListTags

ListVersionsByFunction

PublishVersion

PutFunctionCodeSigningConfig

PutFunctionConcurrency

UpdateAlias

UpdateFunctionCode

함수

aws:ResourceTag/${TagKey}

CreateFunctionUrlConfig

DeleteFunctionUrlConfig

GetFunctionUrlConfig

UpdateFunctionUrlConfig

함수

함수 별칭

lambda:FunctionUrlAuthType

lambda:FunctionArn

aws:ResourceTag/${TagKey}

ListFunctionUrlConfigs

함수

lambda:FunctionUrlAuthType

DeleteFunctionEventInvokeConfig

GetFunctionEventInvokeConfig

ListFunctionEventInvokeConfigs

PutFunctionEventInvokeConfig

UpdateFunctionEventInvokeConfig

함수

aws:ResourceTag/${TagKey}

DeleteProvisionedConcurrencyConfig

GetProvisionedConcurrencyConfig

PutProvisionedConcurrencyConfig

함수 별칭

함수 버전

aws:ResourceTag/${TagKey}

GetAccountSettings

ListFunctions

*

None

TagResource

함수

aws:ResourceTag/${TagKey}

aws:RequestTag/${TagKey}

aws:TagKeys

UntagResource

함수

aws:ResourceTag/${TagKey}

aws:TagKeys

이벤트 소스 매핑 작업

이벤트 소스 매핑에서는 삭제 및 업데이트 권한을 특정 이벤트 소스로 제한할 수 있습니다. 사용자가 이벤트 소스를 호출하기 위해 구성할 수 있는 함수를 lambda:FunctionArn 조건으로 제한할 수 있습니다.

이러한 작업에서는 리소스가 이벤트 소스 매핑이며, 따라서 해당 이벤트 소스 매핑으로 호출되는 함수에 따라 Lambda의 조건으로 권한을 제어할 수 있습니다.

이벤트 소스 매핑 작업
작업 리소스 Condition

DeleteEventSourceMapping

UpdateEventSourceMapping

이벤트 소스 매핑

lambda:FunctionArn

CreateEventSourceMapping

GetEventSourceMapping

*

lambda:FunctionArn

ListEventSourceMappings

*

없음

계층 작업

계층 작업으로 사용자가 함수에 사용하거나 관리할 수 있는 계층을 제한할 수 있습니다. 계층 사용과 관련된 작업 및 권한은 계층의 버전에 적용되며, PublishLayerVersion은 계층 이름에 적용됩니다. 어느 쪽이든 와일드카드를 사용하여 사용자가 작업할 수 있는 계층을 이름별로 제한할 수 있습니다.

참고

GetLayerVersion은 작업은 GetLayerVersionByArn도 포괄합니다. Lambda는 IAM 작업으로 GetLayerVersionByArn을 지원하지 않습니다.