설명
여러 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
각 함수에 별도 역할을 지정합니다. 역할 이름뿐 아니라 각 역할의 정책을 함수의 실제 요구에 맞춰 제한하세요.