Amazon VPC에 연결된 보안 그룹을 삭제할 수 없는 이유는 무엇입니까?

6분 분량
0

Amazon Virtual Private Cloud(VPC)의 보안 그룹을 삭제하려고 할 때 오류가 발생합니다.

간략한 설명

다음과 같은 이유로 보안 그룹을 삭제하지 못할 수 있습니다.

  • 보안 그룹이 기본 보안 그룹입니다.
  • 보안 그룹을 자체 규칙 또는 다른 보안 그룹 규칙에서 참조합니다.
  • 보안 그룹이 실행 중이거나 중지된 상태의 인스턴스와 연관됩니다.
  • 보안 그룹이 네트워크 인터페이스와 연관되어 있습니다.
  • DeleteSecurityGroup 작업을 수행할 권한이 없습니다.

해결 방법

보안 그룹이 기본 보안 그룹임

기본 보안 그룹을 삭제하려고 하면 다음 오류가 발생합니다.

error: Client.CannotDelete

모든 VPC에 기본 보안 그룹이 있습니다. 인스턴스를 시작할 때 다른 보안 그룹을 지정하지 않으면 기본 보안 그룹이 자동으로 인스턴스와 연결됩니다. 기본 보안 그룹은 삭제할 수 없습니다. 하지만 기본 보안 그룹의 규칙은 변경할 수 있습니다. 자세한 내용은 VPC의 기본 보안 그룹을 참조하세요.

보안 그룹을 자체 규칙 또는 다른 보안 그룹 규칙에서 참조함

보안 그룹을 자체 규칙 또는 다른 보안 그룹의 규칙에서 참조하는 경우 다음 오류가 발생합니다.

error: sg-A This security group has a rule that references sg-B and itself

보안 그룹 규칙에서 참조하는 보안 그룹은 삭제할 수 없습니다. 자체 규칙 중 하나에서 보안 그룹이 참조하는 경우 보안 그룹을 삭제하려면 해당 규칙을 삭제해야 합니다. 보안 그룹이 다른 보안 그룹의 규칙에서 참조되었다면 참조를 제거해야 보안 그룹을 삭제할 수 있습니다. 보안 그룹 규칙을 수정하려면 보안 그룹 규칙을 사용한 작업을 참조하세요.

예를 들어 보안 그룹 A(sg-A)에는 보안 그룹 B(sg-B)와 그 자체를 참조하는 규칙이 있습니다. 이러한 그룹 중 하나를 삭제하려면 먼저 다음을 수행해야 합니다.

  • sg-b와 연결된 규칙을 제거하여 sg-b를 삭제합니다.
  • 자체 참조 규칙을 삭제하여 sg-a를 삭제합니다.

삭제하려는 보안 그룹과 연결된 규칙을 제거하려면 아래 단계를 따르세요(위 예의 sg-B).

1.    Amazon VPC 콘솔을 엽니다.

2.    탐색 창에서 [Security Groups]를 선택합니다.

3.    업데이트할 보안 그룹을 선택합니다.

4.    사용 사례에 따라 작업(Actions), 인바운드 규칙 편집(Edit inbound rules) 또는 작업(Actions), **아웃바운드 규칙 편집(Edit outbound rules)**을 선택합니다.

5.    삭제하려는 규칙에 대해 **삭제(Delete)**를 선택합니다.

6.    **규칙 저장(Save rules)**을 선택합니다.

보안 그룹을 피어링 연결이 설정된 다른 Amazon VPC 내의 보안 그룹에서 참조할 수도 있습니다. 보안 그룹을 삭제하려면 참조를 제거하거나 VPC 피어링 연결을 삭제할 수 있습니다.

보안 그룹이 다른 Amazon VPC 내의 보안 그룹에서 참조되는 경우 아래 단계를 따르세요.

1.    Amazon VPC 콘솔을 엽니다.

2.    탐색 창에서 **피어링 연결(Peering Connections)**을 선택합니다.

3.    VPC 피어링 연결을 선택한 다음 작업(Actions), **VPC 피어링 연결 삭제(Delete VPC Peering Connection)**를 선택합니다.

4.    확인 대화 상자에서 **예, 삭제합니다(Yes, delete)**를 선택합니다.

참고: DescribeSecurityGroupReferences API를 사용하여 삭제하려는 보안 그룹을 참조하는 VPC 피어링 연결의 다른 쪽 VPC를 설명할 수 있습니다.

보안 그룹이 실행 중이거나 중지된 상태의 인스턴스와 연관됨

실행 중이거나 중지된 인스턴스에 할당된 보안 그룹은 삭제할 수 없습니다. 보안 그룹이 인스턴스에 할당되었는지 확인하려면 다음을 수행합니다.

1.    Amazon Elastic Compute Cloud(Amazon EC2) 콘솔을 엽니다.

2.    탐색 창에서 [인스턴스(Instances)]를 선택합니다.

3.    콘텐츠 창의 검색 창에 Client filter를 입력합니다.

4.    드롭다운에서 **인스턴스 상태(클라이언트)(Instance state (client))**를 선택합니다.

5.    **인스턴스 상태(클라이언트): 실행 중(Instance state (client): running)**을 선택합니다.

6.    3~5단계를 반복합니다. 그런 다음 **인스턴스 상태(클라이언트): 중지됨(Instance state (client): stopped)**을 선택합니다.

7.    필터링된 목록에서 보안 그룹 ID(Security Group ID) 또는 **보안 그룹 이름(Security Group Name)**을 선택합니다. 그런 다음 보안 그룹 ID 또는 보안 그룹 이름을 선택합니다. 보안 그룹에 할당된 모든 인스턴스가 필터링된 인스턴스 목록에 나타납니다.

참고: 인스턴스에 할당된 보안 그룹을 변경하려면 보안 그룹을 사용한 작업을 참조하세요.

보안 그룹은 네트워크 인터페이스와 연결되어 있습니다.

요청자 관리형 네트워크 인터페이스와 연관된 보안 그룹을 삭제할 수 없습니다. 요청자 관리형 네트워크 인터페이스는 Application Load Balancer 노드와 같은 관리형 리소스에 대해 자동으로 생성됩니다. AWS Lambda, Amazon Elastic File System(Amazon EFS), FSx, Redis, Memcached 및 Amazon DynamoDB와 같은 서비스 및 리소스에는 항상 탄력적 네트워크 인터페이스에 연결되는 보안 그룹이 있습니다. 이러한 탄력적 네트워크 인터페이스를 삭제하거나 분리하려면 네트워크 인터페이스가 나타내는 리소스를 삭제해야 합니다. 이 작업이 완료되면 AWS 서비스가 자동으로 네트워크 인터페이스를 분리했다가 삭제함

이러한 유형의 보안 그룹을 삭제하려고 했을 때 인터페이스가 다른 AWS 서비스에서 관리하는 리소스에 연결되었을 경우 다음과 같은 오류가 발생할 수 있습니다. 예를 들어 이러한 서비스는 Elastic Load Balancing(ELB) 또는 Lambda일 수 있습니다. 다음은 오류 메시지의 예입니다.

Error detaching network interface. eni-xxxxxxxx:Network interface 'eni-xxxxxxxx' is currently in use

이러한 오류를 해결하려면 다음을 수행합니다.

1.    Amazon EC2 콘솔을 엽니다.

2.    탐색 창에서 [네트워크 인터페이스]를 선택합니다.

3.    분리하거나 삭제할 탄력적 네트워크 인터페이스의 탄력적 네트워크 인터페이스 ID를 검색합니다.

4.    탄력적 네트워크 인터페이스를 선택하고 세부 정보(Details) 탭을 선택합니다.

5.    중요: 탄력적 네트워크 인터페이스가 연결된 리소스를 찾으려면 설명을 검토합니다.

6.    더 이상 해당 AWS 서비스를 사용하지 않는 경우 먼저 서비스를 삭제하세요. 탄력적 네트워크 인터페이스가 VPC에서 자동으로 제거됩니다.

보안 그룹이 VPC 엔드포인트에서 사용되는 네트워크 인터페이스와 연결된 경우에는 삭제할 수 없습니다. VPC 엔드포인트에서 사용되는 네트워크 인터페이스와 연결된 보안 그룹을 삭제하려고 하면 다음과 유사한 오류가 표시될 수 있습니다.

An error occurred (DependencyViolation) when calling the DeleteSecurityGroup operation: resource sg-xyz has a dependent object

보안 그룹을 삭제하려면 수정 - 인터페이스 - 엔드포인트에서 보안 그룹을 제거하거나 교체하세요.

1.    Amazon VPC 콘솔을 엽니다.

2.    탐색 창에서 **엔드포인트(Endpoints)**를 선택하고 인터페이스 엔드포인트를 선택합니다.

3.    작업,**보안 그룹 관리(Manage security groups)**를 선택합니다.

4.    필요에 따라 보안 그룹을 선택하거나 선택 해제한 다음 **저장(Save)**을 선택합니다.

참고: AWS Command Line Interface(AWS CLI)에서 다음 명령을 실행하여 보안 그룹 ID를 기준으로 보안 그룹과 연결된 네트워크 인터페이스를 찾습니다. 명령 출력은 보안 그룹과 연결된 네트워크 인터페이스를 보여 줍니다.

aws ec2 describe-network-interfaces --filters Name=group-id,Values=<group-id> --region <region> --output json

예:

aws ec2 describe-network-interfaces --filters Name=group-id,Values=sg-07abcd9f0e12345495 --region us-east-1 --output json

명령 출력을 검토합니다. 다음 예에서 보이는 것처럼 출력이 비어 있으면 보안 그룹과 연결된 리소스가 없는 것입니다.

출력 예

{

    "NetworkInterfaces": []

}

참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우, 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.

DeleteSecurityGroup 작업을 수행할 권한 없음

다음 오류가 표시되는 경우 보안 그룹을 삭제할 수 있는 올바른 사용 권한이 없을 수 있습니다.

Failed to delete security groups. An unknown error happened. You are not authorized to perform "DeleteSecurityGroup" operation

1.    AWS CloudTrail 로그에서 DeleteSecurityGroup API 호출을 확인합니다. 로그에 다음이 나타나는 경우 오류는 IAM 역할과 연결된 권한과 연관되어 있습니다.

errorMessage: You are not authorized to perform this operation.

2.    DeleteSecurityGroup 작업이 AWS Identity and Access Management(IAM) 정책에 추가되었는지 확인합니다.

3.    조직에 문의하여 보안 제어 정책(SCP)에서 필요한 사항을 변경하고 사용자의 권한을 변경하세요. 마스터 계정에 SCP를 변경하도록 요청해야 할 수 있습니다.

참고: SCP는 멤버 계정의 루트 사용자를 포함하여 멤버 계정의 IAM 사용자 및 역할에 대한 권한을 제한합니다. 권한이 계정 상위 수준에서 암시적 또는 명시적으로(거부 사용) 차단된 경우, 계정 관리자가 */* 권한이 있는 AdministratorAccess IAM 정책을 사용자에게 연결하더라도 영향을 받는 계정의 사용자 또는 역할은 해당 권한을 사용할 수 없습니다.

자세한 내용은 권한에 대한 SCP 효과를 참조하세요.


AWS 공식
AWS 공식업데이트됨 일 년 전