실행 역할을 공유하는 서버리스 함수

함수별 실행 역할과 정책을 검토하여 다른 함수에만 필요한 권한이 함께 부여되지 않도록 하세요.

설명

여러 AWS::Serverless::Function이 실행 역할을 공유하면 한 함수에 필요한 권한이 다른 함수에도 부여될 수 있습니다. 함수별 업무와 필요한 리소스를 기준으로 권한을 분리하세요. 역할이 다르다는 사실만으로 최소 권한이 보장되는 것은 아니므로 연결된 정책도 확인해야 합니다.

잠재적 영향

  • 침해되거나 오작동하는 함수가 자신의 업무에 필요하지 않은 리소스에 접근할 수 있습니다.
  • 공통 역할의 정책을 변경하면 이를 사용하는 여러 함수의 권한과 동작에 영향을 줄 수 있습니다.

해결 방법

  • 함수마다 필요한 작업과 리소스를 확인하고 적절한 실행 역할로 분리하세요. 동일한 정책을 재사용하더라도 불필요한 권한은 포함하지 마세요.
  • 실행 역할의 신뢰 정책과 실제 연결된 권한을 확인하세요. 변경 후 필요한 호출과 의도하지 않은 접근의 거부를 시험하세요.

예시

FunctionImage에는 배포할 실제 ECR 이미지 URI를 지정하세요. 역할 ARN은 해당 계정에 존재하고 Lambda가 수임할 수 있는 역할로 바꿔야 합니다. 역할 정책은 이 예시에서 정의하지 않습니다.

변경 전

yaml
Transform: AWS::Serverless-2016-10-31
Parameters:
  FunctionImage:
    Type: String
Resources:
  Function1:
    Type: AWS::Serverless::Function
    Properties:
      PackageType: Image
      ImageUri: !Ref FunctionImage
      Role: arn:aws:iam::123456789012:role/lambda-role

  Function2:
    Type: AWS::Serverless::Function
    Properties:
      PackageType: Image
      ImageUri: !Ref FunctionImage
      Role: arn:aws:iam::123456789012:role/lambda-role

두 함수가 같은 실행 역할을 사용합니다. 두 함수의 권한 요구가 다르면 공유 역할이 필요 이상의 접근을 허용할 수 있습니다.

변경 후

yaml
Transform: AWS::Serverless-2016-10-31
Parameters:
  FunctionImage:
    Type: String
Resources:
  Function1:
    Type: AWS::Serverless::Function
    Properties:
      PackageType: Image
      ImageUri: !Ref FunctionImage
      Role: arn:aws:iam::123456789012:role/function1-role

  Function2:
    Type: AWS::Serverless::Function
    Properties:
      PackageType: Image
      ImageUri: !Ref FunctionImage
      Role: arn:aws:iam::123456789012:role/function2-role

각 함수에 별도 역할을 지정합니다. 역할 이름뿐 아니라 각 역할의 정책을 함수의 실제 요구에 맞춰 제한하세요.

참조