LoginSignup
2

More than 1 year has passed since last update.

posted at

Organization

lambdaでセキュリティグループのインバウンドルールを変更する

AWSに構築したシステムのセキュリティ設計として、セキュリティグループでインバウンド制限をすることは珍しくないと思います。システムの利用者が増えた・減った場合、セキュリティグループを更新する必要があり、通常はAWSコンソールで変更すれば良いですが、諸事情により非エンジニアがAWSコンソールを使わずに変更できるようにする必要があったので、その方法をメモしておきます。

はじめに

設定する人がエンジニアではない想定だったので、WEBでセキュリティグループのインバウンドを追加・削除できるようにしました。全体のアーキテクチャは下記のような感じなのですが、この記事ではlambdaにフォーカスしています。

provDiagram.jpg

lambdaでセキュリティグループの追加削除する

lambdaでboto3を使ってセキュリティグループへのIPアドレス追加、削除をします。
今回はpython 3.8を使っています。
セキュリティグループにアクセスできるように、lambdaのロールを追加しておく必要があります。AmazonEC2FullAccessがあればOKです。

セキュリティグループの設定を取得する

まずは、対象のセキュリティグループの設定を取得します。
boto3やjsonなど必要なモジュールはimportしている前提です。
セキュリティグループは、セキュリティグループIDで指定します。

sg_prov.py
    ec2 = boto3.client('ec2')
    sec_g = 'sg-xxxxxxxxxxxxxxxxx'
        
    res = ec2.describe_security_groups(
        GroupIds=[sec_g]
        )

戻り値で、登録しようとしているIPアドレスが含まれているか(すでに登録ずみか)のチェックができます。

sg_prov.py
    json_res = json.dumps(res)
    if add_ip in json_res :
        #登録済みの場合の処理

セキュリティグループにIPアドレスを追加する

追加する場合は、セキュリティグループ、ポート、IPアドレス、Descriptionを指定して登録します。

sg_prov.py
        add_res = ec2.authorize_security_group_ingress(
            GroupId=sec_g,
            DryRun=False,
            IpPermissions=[
                {
                    'IpProtocol': 'tcp',
                    'FromPort': 443,
                    'ToPort': 443,
                    'IpRanges': [
                        {
                            'CidrIp': add_ip,
                            'Description': desc
                        },
                    ]
                }
            ]
        )

セキュリティグループからIPアドレスを削除する

削除する場合は、セキュリティグループ、削除対象のポート、IPアドレスを指定します。

sg_prov.py
        del_res = ec2.revoke_security_group_ingress(
            GroupId=sec_g,
            IpPermissions=[
                {
                    'IpProtocol': 'tcp',
                    'FromPort': 443,
                    'ToPort': 443,
                    'IpRanges': [
                        {
                            'CidrIp': add_ip,
                        },
                    ]
                }
            ]
        )

まとめ

AWSコンソールで、追加・削除ができていることが確認できれば完了です。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2