IAM User에게 보안 그룹 생성과 EC2 인스턴스의 보안 그룹을 교체할 수 있는 권한을 할당해 보기

IAM User에게 보안 그룹 생성과 EC2 인스턴스의 보안 그룹을 교체할 수 있는 권한을 할당해 보는 방법을 정리해 봤습니다.
2024.03.14

안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 IAM User에게 보안 그룹 생성과 EC2 인스턴스의 보안 그룹을 교체할 수 있는 권한을 할당해 보는 방법을 정리해 봤습니다.

권한 할당 이후에 나타나는 문제

보안 그룹을 생성하고, EC2 인스턴스에 보안 그룹을 교체하기 위해서는 아래 두 가지 권한을 설정할 필요가 있습니다.

  • CreateSecurityGroup
  • ModifyNetworkInterfaceAttribute

하지만 CreateSecurityGroup 권한을 추가해도 보안 그룹 생성에 실패합니다.

EC2 인스턴스의 보안 그룹 변경도 ModifyNetworkInterfaceAttribute 권한을 추가했지만 보안 그룹 변경에 실패합니다.

문제 원인으로는 보안 그룹을 생성할 때 보안 그룹에 대한 권한 뿐만 아니라 VPC에 대한 권한도 필요합니다.

보안 그룹의 경우 보안 그룹을 생성할 때 VPC를 선택해야 합니다.

그렇기 때문에 VPC에 대한 접근 권한이 없다면 보안 그룹을 생성할 수 없는 것입니다.

EC2 인스턴스에 보안 그룹을 추가하는 것도, 별도의 권한이 필요합니다.

EC2 인스턴스는 최소 하나 이상의 네트워크 인터페이스를 가지고 있으며 이 네트워크 인터페이스에는 하나 이상의 보안 그룹이 설정되어 있습니다.

즉, EC2 인스턴스에 직접적으로 보안 그룹을 추가하는 것이 아닌, 네트워크 인터페이스에 보안 그룹을 추가하는 것이기 때문에 네트워크 인터페이스에 대한 권한이 별도로 필요합니다.

권한 수정

{
            "Effect": "Allow",
            "Action": [
                "ec2:CreateSecurityGroup",
                "ec2:ModifyNetworkInterfaceAttribute"
            ],
            "Resource": "arn:aws:ec2:ap-northeast-3:xxxxxxxxxx:security-group/*"
        },
        {
            "Effect": "Allow",
            "Action": "ec2:ModifyNetworkInterfaceAttribute",
            "Resource": "arn:aws:ec2:ap-northeast-3:xxxxxxxxxx:network-interface/*"
        },
        {
            "Effect": "Allow",
            "Action": "ec2:CreateSecurityGroup",
            "Resource": "arn:aws:ec2:ap-northeast-3:xxxxxxxxxx:vpc/vpc-xxxxxxxxxx"
        }

추가할 권한으로는 CreateSecurityGroup, ModifyNetworkInterfaceAttribute를 기본적으로 추가한 다음 네트워크 인터페이스와 VPC에 대한 권한을 추가합니다.

특정 네트워크 인터페이스 혹은 VPC로 범위를 좁히고 싶다면 vpc-xxxxxxxxxx 처럼 해당 리소스의 ID를 기재합니다.

권한을 추가한 다음, 보안 그룹을 생성합니다.

성공적으로 보안 그룹이 생성되었습니다.

이어서 EC2 인스턴스에 생성한 보안 그룹을 추가합니다.

성공적으로 보안 그룹이 추가된 것을 확인할 수 있습니다.

특정 IAM User에게 권한을 할당할 때 해당 리소스가 다른 리소스와의 접전이 있는지 확인할 필요가 있습니다.

본 블로그 게시글을 보시고 문의 사항이 있으신 분들은 클래스메소드코리아 (info@classmethod.kr)로 연락 주시면 빠른 시일 내 담당자가 회신 드릴 수 있도록 하겠습니다 !