Amazon VPC にアタッチされているセキュリティグループを削除できないのはなぜですか?

所要時間2分
0

Amazon Virtual Private Cloud (Amazon VPC) のセキュリティグループを削除しようとするとエラーが発生します。

解決策

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行時にエラーが発生する場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用しているかどうかを確認してください

セキュリティグループを削除しようとすると、以下の理由でエラーが発生する場合があります。

セキュリティグループがデフォルトのセキュリティグループである

すべての Amazon VPC にはデフォルトのセキュリティグループがあります。セキュリティグループを指定していない場合、新しく起動した Amazon Elastic Compute Cloud (Amazon EC2) インスタンスにデフォルトのセキュリティグループが自動的に関連付けられます。

デフォルトのセキュリティグループを削除しようとすると、次のエラーが発生します:

「error: Client.CannotDelete」

デフォルトのセキュリティグループを削除することはできませんが、デフォルトのセキュリティグループのルールを変更することはできます。詳細については、「Default security groups for your VPCs」を参照してください。

セキュリティグループが、自身のセキュリティグループのルールまたは別のセキュリティグループのルールによって参照されている

セキュリティグループが自身のセキュリティグループルールによって参照されているために、エラーが発生する場合があります。この問題を解決するには、セキュリティグループを削除する前にルールを削除します。

セキュリティグループを参照するルールを削除するには、次の手順を実行します。

  1. Amazon VPC コンソールを開きます。
  2. ナビゲーションペインで [セキュリティグループ] を選択します。
  3. 更新するセキュリティグループを選択します。
  4. [アクション] [インバウンドルールを編集] の順に選択するか、[アクション][アウトバウンドルールを編集] の順に選択します。
  5. 削除するルールで [削除] を選択します。
  6. [ルールの保存] を選択します。

セキュリティグループのルールの更新の詳細については、「Security group rules」を参照してください。

別のセキュリティグループのルールが参照しているセキュリティグループを削除しようとすると、次のエラーが発生します

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

削除するセキュリティグループを別のセキュリティグループのルールが参照している場合は、セキュリティグループを削除する前にルールを削除します。

ピアリング接続が確立されている別の Amazon VPC のセキュリティグループが、削除するセキュリティグループを参照している場合があります。この場合はセキュリティグループを削除する前に、ルールを削除するか、Amazon VPC ピアリング接続を削除します。

注: DescribeSecurityGroupReferences API を使用して、セキュリティグループを参照している Amazon VPC ピアリング接続のもう一方の端を記述します。

セキュリティグループが AWS リソースに関連付けられている

Amazon EC2 インスタンスなどの AWS リソースや Amazon API Gateway の VPC リンクに関連付けられているセキュリティグループを削除することはできません。

次のエラーが発生します:

「Some security groups can't be deleted.The following security groups can't be deleted.These security groups are the default security groups, referenced by other security groups, or are associated with instances or network interfaces.」

セキュリティグループを使用しているリソースを特定するには、「Amazon EC2 のセキュリティグループに関連付けられているリソースを特定するにはどうすればよいですか?」を参照してください。

重要: VPC リンクを作成した後は、そのセキュリティグループまたはサブネットを変更することはできません。

インスタンスに割り当てられているセキュリティグループを変更する場合は、「Work with security groups」を参照してください。

セキュリティグループがネットワークインターフェイスに関連付けられている

リクエスタが管理するネットワークインターフェイスに関連付けられているセキュリティグループを削除することはできません。リクエスタが管理するネットワークインターフェイスは、Application Load Balancer ノードなどの管理対象リソース用に自動的に作成されます。AWS の一部のサービスとリソースには、常に Elastic Network Interface にアタッチされるセキュリティグループがあります。例としては、AWS Lambda、Amazon FSx、Amazon ElastiCache for Redis、ElastiCache for Memcached などが挙げられます。

ネットワークインターフェイスを削除またはデタッチする場合は、「ネットワークインターフェイスの削除」を参照してください。

Amazon VPC エンドポイントで使用されているネットワークインターフェイスに関連付けられているセキュリティグループを削除することはできません。

削除しようとすると、次のエラーが発生します。

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

インターフェイスエンドポイントからセキュリティグループを削除または交換するには、次の手順を実行します:

  1. Amazon VPC コンソールを開きます。
  2. ナビゲーションペインで [エンドポイント] を選択します。
  3. インターフェイスエンドポイントを選択し、[アクション][セキュリティグループを管理] の順に選択します。
  4. セキュリティグループを選択または消去し、[保存] を選択します。

describe-network-interfaces AWS CLI コマンドを実行して、セキュリティグループに関連付けられているネットワークインターフェイスを検索します。** <group-id>** は対象のセキュリティグループの ID に、<region> は対象の AWS リージョンに置き換えます:

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

コマンド出力を確認します。出力が空の場合、セキュリティグループに関連付けられたリソースはありません。

コマンド出力の例:

{
    "NetworkInterfaces": []
}

DeleteSecurityGroup 操作を実行する権限がない

DeleteSecurityGroup API を使用するには、AWS Identity and Access Management (IAM) の適切なアクセス許可を設定する必要があります。

重要: 削除するセキュリティグループがインスタンスに関連付けられているか、別のセキュリティグループによって参照されている場合、DeleteSecurityGroup API は失敗します。その場合、操作は DependencyViolation エラーで失敗します。

適切なアクセス許可がない場合にセキュリティグループを削除しようとすると、次のエラーが発生します:

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

DeleteSecurityGroup 操作のエラーをトラブルシューティングするには、次の手順を実行します。

  1. AWS CloudTrail コンソールを開きます。
  2. ナビゲーションペインで [イベント履歴] を選択します。
  3. [ルックアップ属性] ドロップダウンリストで、[イベント名] を選択します。
  4. 検索ボックスに「DeleteSecurityGroup」と入力すると、操作の API 呼び出しが表示されます。
  5. [イベント履歴] リストの以下のエラーメッセージは、エラーが IAM のアクセス許可に関連していることを示しています:
    「You are not authorized to perform this operation.」
  6. アクションを削除するユーザーまたはロールに必要な AWS IAM ポリシーに DeleteSecurityGroup アクションが追加されていることを確認します。
    詳細については、「IAM ID のアクセス許可の追加および削除」を参照してください。
  7. AWS Organizations で、組織のサービスコントロールポリシー (SCP) を変更します。その後、IAM のユーザーまたはロールのアクセス許可を変更します。
    注: 自分がプライマリアカウントのオーナーでない場合は、プライマリアカウントのオーナーに SCP の変更を依頼してください。

SCP の詳細については、「SCP effects on permissions」を参照してください。

VPC 所有者が作成したセキュリティグループをユーザーが削除できない

自分が所有していない共有 Amazon VPC にあるセキュリティグループを削除しようとすると、次のエラーが発生します。

「You are not authorized to perform DeleteSecurityGroup operation.A subnet in this vpc is shared but the provided object is not owned by you.」

DeleteSecurityGroup 操作のエラーをトラブルシューティングするには、次の手順を実行します。

  1. AWS CloudTrail コンソールを開きます。
  2. ナビゲーションペインで [イベント履歴] を選択します。
  3. [ルックアップ属性] ドロップダウンリストで、[イベント名] を選択します。
  4. 検索ボックスに「DeleteSecurityGroup」と入力すると、操作の API 呼び出しが表示されます。
  5. 自分のアカウントがセキュリティグループを所有していないことを確認します。組織内の別のアカウントがセキュリティグループを所有している場合は、プライマリオーナーにセキュリティグループの削除を依頼してください。

関連情報

別の AWS アカウントと共有されている VPC を削除するにはどうすればよいですか?

AWS公式
AWS公式更新しました 6ヶ月前