SQS 액세스 정책을 업데이트하여 최소 권한 액세스를 적용하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2022년 8월 12일

악의적 공격을 격리하기 위해 Amazon Simple Queue Service(Amazon SQS) 대기열의 VPC 엔드포인트에 대한 액세스를 제한하려고 합니다. 다른 VPC 엔드포인트에서의 액세스를 거부하고 AWS Lambda 함수 이벤트 소스 권한을 제한하려면 어떻게 해야 합니까?

해결 방법

SQS 대기열을 보호하려면 SQS 액세스 정책에 최소 권한 원칙을 적용합니다. 이벤트 소스 매핑을 통해 지정한 VPC 엔드포인트 및 Lambda 함수의 요청만 허용하여 대기열의 악의적인 공격을 격리할 수 있습니다. 다음 SQS 액세스 정책을 구현하여 대기열을 보호하고 공격을 격리할 수 있습니다.

{
  "Version": "2008-10-17",
  "Id": "default_policy_ID",
  "Statement": [
    {
      "Sid": "owner_statement",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam:XXXXXXX:root"
      },
      "Action": "SQS:*",
      "Resource": "arn:aws:sqs:us-east-1:XXXXXXXX:test.fifo"
    },
    {
      "Sid": "RestrictSendReceiveToVpce",
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "sqs:SendMessage",
        "sqs:ReceiveMessage",
        "sqs:DeleteMessage",
        "sqs:DeleteQueue",
        "sqs:PurgeQueue"
      ],
      "Resource": "arn:aws:sqs:us-east-1: XXXXXX:test.fifo",
      "Condition": {
        "ArnNotEquals": {
         "aws:PrincipalArn": "Lambda execution role arn"
        },
        "StringNotEquals": {
          "aws:SourceVpce": "vpce-XXXXX"
        }
      }
    }
  ]
}

이 SQS 액세스 정책은 다음을 수행합니다.

  • VPC 엔드포인트가 요청을 수행할 때 제공된 aws:sourceVpce가 아닌 경우 정책은 SQS 대기열로 전송되는 클라이언트 메시지를 거부합니다.
  • Lambda 함수의 실행 역할이 PrincipalArn이 아닌 경우 정책은 Lambda 함수의 권한을 거부합니다.

정책의 ArnNotEqualsStringNotEquals 조건은 OR 평가 논리를 사용합니다. 두 문 중 하나라도 true이면 요청이 허용됩니다.

조건별 평가 로직에 대한 자세한 내용은 여러 키 또는 값으로 조건 생성 단원을 참조하세요.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?