Lambda 코드에 필요한 것만 허용

실행하는 동안AWS Lambda functions READ 또는 WRITE 작업에 액세스하려면 IAM 권한이 필요합니다. 이를 위해 IAM Role을 연결된 IAM 정책과 매핑해야 합니다.

가장 좋은 방법은 최소 권한 권한을 따르는 것이지만 개발 단계에 있을 때 여러 가지 다른 항목을 테스트하고 결국 너무 많은 권한을 갖게 되는 경우가 많습니다.

Lambda의 권한 이해




AWS Lambda 함수 콘솔에서 Lambda 함수에 필요한 권한을 보고 관리할 수 있습니다. 이는 구성 탭 아래의 권한 탭에서 사용할 수 있습니다. 이 하이퍼링크는 다양한 권한을 수정할 수 있는 IAM 역할에 연결됩니다.


AWS Lambda 기능 콘솔은 작업 및 리소스 요약과 함께 리소스 기반 권한 개요를 제공합니다. 이를 통해 이 Lambda 함수가 Amazon CloudWatch 로그 그룹을 생성할 수 있음을 이해할 수 있습니다.

권한 탭은 이 특정 Lambda 함수를 트리거할 수 있는 다른 소스에 대한 가시성을 제공합니다. Lambda 함수 트리거의 소스가 SNS인 경우 SNS 주제의 lambda:InvokeFunctionAWS:SourceArn 작업을 허용하는 리소스 정책 문서를 볼 수 있습니다.

최소 권한 권한이 필요한 이유



과거에 받았던 몇 가지 질문은 다음과 같습니다.

You have already access controlled your IAM users, why another level of access control for Lambda functions?



합법적인 질문처럼 들리지만 실제로는 최소 권한 자체의 개념에 대한 이해 부족입니다. 음, 수동으로 수행되거나 IAM 사용자 수준 권한이 작동하는 콘솔에서 볼 수 있는 특정 작업이 있습니다. 그러나 AWS SDK 또는 Lambda 트리거 또는 Lambda 대상에 대한 다른 소스를 사용하여 프로그래밍 방식으로 AWS Lambda Functions에서 다른 AWS 서비스 또는 리소스에 액세스하는 데 IAM 역할이 사용되는 경우. 이 작업이 완료되면 특정 Lambda 함수에 대한 IAM 역할이 실행됩니다!
이 시나리오에서 IAM 사용자에게 특정 SNS 주제를 삭제할 수 있는 권한이 없고 Lambda 함수의 IAM 역할에 Allow: sns:*의 일반 권한이 있는 경우 IAM 사용자는 AWS SDK를 사용하여 다음을 수행할 수 있는 Lambda 함수 코드를 배포할 수 있습니다. 주제 ARN과 함께 deleteTopic()를 사용하고 주제를 성공적으로 삭제합니다.

Why not have a generic IAM role for all Lambda functions?



이렇게 하면 다양한 IAM 역할의 유지 관리가 더 쉬워지지만 deleteTopic() 메서드가 Lambda 코드에 있어서는 안 되지만 종료되는 위의 시나리오와 같이 해당 Lambda 함수용이 아닌 위험한 코드가 있는 경우 발생합니다. 거기. 이러한 시나리오에서 Lambda의 IAM 실행 역할은 방어 계층이 됩니다! 따라서 전용 IAM 실행 역할이 있는 각 Lambda 함수는 해당 Lambda 함수에 필요한 항목만 허용합니다.

Should I go with managed Policies?



AWS 관리형 정책은 시작하기에 좋은 방법이며 대부분의 경우를 처리하지만 때로는 고유한 IAM 정책을 정의해야 할 수도 있습니다.

ManagedPolicyArns:
        - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
        - arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess
        - arn:aws:iam::aws:policy/CloudWatchFullAccess


대부분의 사용 사례에서 다른 AWS 리소스에 대한 전체 액세스 권한이 필요하지 않을 수 있으므로 적합한 관리형 정책을 선택하는 것은 사용자의 결정입니다.

Policies:
        -
          PolicyName: StepFunctionsInvokeLambda
          PolicyDocument: 
            Version: "2012-10-17"
            Statement: 
              - 
                Effect: Allow
                Action: lambda:InvokeFunction
                Resource: !GetAtt Iterator.Arn


결론



최근에 이 블로그 게시물을 작성하도록 동기를 부여한 적절한 IAM 권한으로 Lambda 코드를 보호하는 이유에 대한 몇 가지 질문을 받았습니다. 모범 사례 접근 방식에 따라 각 Lambda 함수에 대해 최소 권한과 전용 IAM 실행 역할을 사용하는 것이 항상 좋습니다.

좋은 웹페이지 즐겨찾기