정책의 리소스 및 조건 섹션 미세 조정 - AWS Lambda

정책의 리소스 및 조건 섹션 미세 조정

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

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

리소스 유형별로 작업 범위를 제한하는 방법에 대한 일반적인 설계는 다음과 같습니다.

  • 함수 – 함수에 대한 작업도 특정 함수에만 실행되도록 함수, 버전, 별칭 ARN 등으로 제한할 수 있습니다.

  • 이벤트 소스 매핑 - ARN을 통해 작업을 특정 이벤트 소스 매핑 리소스로 제한할 수 있습니다. 이벤트 소스 매핑은 항상 함수와 연결됩니다. lambda:FunctionArn 조건을 사용하여 관련 기능별로 작업을 제한할 수도 있습니다.

  • 계층 - 계층 사용 및 권한과 관련된 작업은 계층의 버전에 적용됩니다.

  • 코드 서명 구성 - ARN을 통해 특정 코드 서명 구성 리소스로 작업을 제한할 수 있습니다.

  • 태그 - 표준 태그 조건을 사용합니다. 자세한 내용은 Lambda에서 속성 기반 액세스 제어 사용 단원을 참조하십시오.

리소스별 권한을 제한하려면 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

  • 코드 서명 구성 - arn:aws:lambda:us-west-2:123456789012:code-signing-config:my-csc

예를 들어 다음 정책을 통해 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*" } ] }

지원되는 IAM 작업 및 함수 동작

작업은 IAM 정책을 통해 허용할 수 있는 항목을 정의합니다. Lambda에서 지원되는 작업 목록은 서비스 승인 참조의 AWS Lambda에 사용되는 작업, 리소스 및 조건 키를 참조하세요. IAM 작업이 Lambda API 작업을 허용하는 경우 대개 IAM 작업의 이름은 Lambda API 작업의 이름과 동일하지만 다음과 같은 예외가 있습니다.

API 작업 IAM 작업
Invoke lambda:InvokeFunction

GetLayerVersion

GetLayerVersionByArn

lambda:GetLayerVersion

서비스 권한 부여 참조에 정의된 리소스와 조건 외에도 Lambda는 특정 작업에 대해 다음과 같은 리소스와 조건을 지원합니다. 이 중 상당수는 정책의 리소스 섹션에 있는 함수 참조와 관련이 있습니다. 아래 표에 설명된 것과 같이, 함수에 대한 작업도 특정 함수에만 실행되도록 함수, 버전, 별칭 ARN 등으로 제한할 수 있습니다.

작업 리소스 Condition

AddPermission

RemovePermission

간접적으로 호출 - 권한: lambda:InvokeFunction

함수 버전

함수 별칭

N/A

UpdateFunctionConfiguration

N/A

lambda:CodeSigningConfigArn

CreateFunctionUrlConfig

DeleteFunctionUrlConfig

GetFunctionUrlConfig

UpdateFunctionUrlConfig

함수 별칭

N/A