PR

AWS Lambdaで使われていないセキュリティグループ(SG)を自動削除する方法:完全ガイド

AWS
スポンサーリンク

AWS Lambdaで使われていないセキュリティグループ(SG)を自動削除する方法:完全ガイド

AWS環境では、リソースの整理と管理が重要です。特に、使われていないセキュリティグループ(SG)は、セキュリティリスクや管理の複雑さを増す要因になります。本ガイドでは、AWS Lambdaを使用して未使用のセキュリティグループを自動的に削除する方法を説明します。

スポンサーリンク

前提条件

  • AWSアカウント
  • AWS CLIがインストールされたローカル環境
  • IAMポリシーでLambda関数がEC2およびVPC関連のAPIを呼び出す権限を持っていること

以下のポリシーをIAMロールにアタッチします。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeNetworkInterfaces",
        "ec2:DeleteSecurityGroup"
      ],
      "Resource": "*"
    }
  ]
}

使われていないセキュリティグループの特定方法

未使用のセキュリティグループを特定するためには、以下の手順を実行します。

  1. 全てのセキュリティグループを取得:
   aws ec2 describe-security-groups --query "SecurityGroups[].GroupId" --output text > all_sg.txt
  1. 使用中のセキュリティグループを取得:
    主要なAWSリソース(EC2、RDS、ELB、Lambdaなど)から使用されているSGを収集します。
   aws ec2 describe-network-interfaces --query "NetworkInterfaces[].Groups[].GroupId" --output text | tr '\t' '\n' | sort -u > used_sg.txt
  1. 未使用のセキュリティグループを特定:
    未使用のセキュリティグループを取得します。
   comm -13 <(sort used_sg.txt) <(sort all_sg.txt) > unused_sg.txt

AWS Lambdaの設定

  1. Lambda関数の作成:
    AWSマネジメントコンソールにログインし、Lambdaサービスを選択します。「関数の作成」をクリックします。
  2. 関数の設定:
  • 関数名: DeleteUnusedSecurityGroups
  • ランタイム: Python 3.x
  • 実行ロール: 上記で作成したIAMロールを選択

未使用セキュリティグループの削除コード

以下のPythonコードをLambda関数に追加します。このコードは、未使用のセキュリティグループを削除する機能を持っています。

import boto3

def lambda_handler(event, context):
    ec2 = boto3.client('ec2')

    # 全セキュリティグループの取得
    all_sgs = ec2.describe_security_groups()
    all_sg_ids = {sg['GroupId'] for sg in all_sgs['SecurityGroups']}

    # 使用中のセキュリティグループを取得
    used_sg_ids = set()

    # EC2のネットワークインターフェースからSGを取得
    network_interfaces = ec2.describe_network_interfaces()
    for ni in network_interfaces['NetworkInterfaces']:
        for group in ni['Groups']:
            used_sg_ids.add(group['GroupId'])

    # 未使用SGを特定
    unused_sg_ids = all_sg_ids - used_sg_ids

    # 未使用SGを削除
    for sg_id in unused_sg_ids:
        try:
            ec2.delete_security_group(GroupId=sg_id)
            print(f"Deleted unused security group: {sg_id}")
        except Exception as e:
            print(f"Error deleting security group {sg_id}: {str(e)}")

    return {
        'statusCode': 200,
        'body': f"Deleted security groups: {list(unused_sg_ids)}"
    }

Lambda関数の実行

  1. テストの設定:
    Lambdaコンソール内で「テスト」を選択し、適当なテストイベントを作成します。
  2. 実行:
    Lambda関数を実行します。関数が正常に動作すれば、未使用のセキュリティグループが削除されます。

まとめ

本ガイドでは、AWS Lambdaを使用して未使用のセキュリティグループを自動的に削除する方法について詳しく説明しました。リソースを定期的に整理することで、AWS環境のセキュリティと管理が向上します。このプロセスを定期的に実行することをお勧めします。


記事が参考になった方、サイト運営を応援してくれる方へ

下のリンクから楽天トラベルでホテル予約か、楽天市場で商品購入を願いします。応援よろしくお願いします。
リンクを表示すれば楽天トラベルで予約の検索ができます。

リンクを表示すれば、お好きな商品が検索できます。

スポンサーリンク
haruki

ITエンジニア × 副業 × 投資家
副業と投資で年間100万円以上の収益を達成
ブログ・YouTube・投資で複数の収益源を確立

私は、IT業界でクラウドエンジニアとして10年以上の経験を積みながら、副業と投資を実践し、資産を増やしてきました。
このブログでは、 「最短で副業、本業の収益を上げ、資産を最大化する方法」 をリアルな成功事例と失敗談を交えて解説します。

Youneedjp.com の目的

「個人が副業と投資で安定収益を得るための実践ガイド」 を提供

副業・投資・お得なライフハックを 「すぐに実践できるノウハウ」 に特化し、
読者が 「月5万円の副収入」 を最短で得られるようにサポートします。

harukiをフォローする

クラウドファンディングで資金を集めています。運営を応援してくださる方は下のリンクの欲しいものリストからプレゼントお願いします。もちろん、住所、氏名などは匿名で発送できます。

参考になたっらSNSシェア&フォローもよろしくお願いします!質問、お仕事相談など、「X」のDMで気軽にご相談ください。

スポンサーリンク
スポンサーリンク
スポンサーリンク
AWS
スポンサーリンク
参考になった情報は、ぜひシェアお願いします
harukiをフォローする

コメント

タイトルとURLをコピーしました