💬
一定期間使用されていないIAMポリシー(カスタマー管理)を効率よく削除するPythonスクリプト
IAMポリシーの管理は、AWSアカウントのセキュリティを保つために重要です。しかし、不要になったカスタマー管理IAMポリシーがアカウントに残っていると、セキュリティリスクが高まる可能性があります。特に、一定期間(例えば3ヶ月)使用されていないポリシーを定期的に確認し、削除することが推奨されます。
この記事では、一定期間使用されていないカスタマー管理IAMポリシーを効率よく削除するためのPythonスクリプトの作成方法を紹介します。このスクリプトは、AWS Boto3ライブラリを使用してIAMポリシーの使用状況を確認し、指定された期間使用されていないポリシーを削除します。
注意事項
-
削除前の確認
このスクリプトは特定の条件を満たすポリシーを削除しますが、削除する前に必ず確認してください。誤って必要なポリシーを削除すると、システムに予期しない影響を与える可能性があります。 -
アクセス権限
スクリプトを実行するIAMユーザーまたはロールには、ポリシーのリスト、詳細取得、および削除の権限が必要です。
前提条件
このスクリプトを実行するには、以下のものが必要です。
- AWSアカウント
- AWS CLIが設定されたローカル環境
- Python 3.x
- Boto3ライブラリ
スクリプトの作成
1. 必要なライブラリのインストール
Boto3ライブラリをインストールします。これにより、PythonスクリプトからAWSサービスにアクセスできるようになります。
pip install boto3
2. スクリプトの作成
以下に示すのは、一定期間(90日間)使用されていないIAMポリシー(カスタマー管理)を削除するPythonスクリプトです。
import boto3
import datetime
# 定数
DAYS_UNUSED = 90
# クライアントの作成
iam_client = boto3.client('iam')
# 現在の日付を取得
current_date = datetime.datetime.now()
def get_unused_policies(days_unused):
policies = iam_client.list_policies(Scope='Local')['Policies']
unused_policies = []
for policy in policies:
policy_arn = policy['Arn']
policy_name = policy['PolicyName']
# アタッチメントを確認
if policy['AttachmentCount'] == 0:
# ポリシーの最終アクセス日を取得
policy_last_used = iam_client.get_policy(PolicyArn=policy_arn)['Policy']['UpdateDate']
days_since_last_used = (current_date - policy_last_used.replace(tzinfo=None)).days
if days_since_last_used > days_unused:
unused_policies.append(policy_arn)
return unused_policies
def delete_policies(policy_arns):
for policy_arn in policy_arns:
print(f"Deleting policy: {policy_arn}")
iam_client.delete_policy(PolicyArn=policy_arn)
def main():
unused_policies = get_unused_policies(DAYS_UNUSED)
if unused_policies:
print(f"Found {len(unused_policies)} unused policies. Deleting them...")
delete_policies(unused_policies)
else:
print("No unused policies found.")
if __name__ == "__main__":
main()
3. スクリプトの実行
スクリプトを保存し、Python環境で実行します。スクリプトは以下の手順で動作します。
- IAMクライアントを作成し、現在の日付を取得。
- カスタマー管理IAMポリシーのリストを取得。
- 各ポリシーの最終更新日をチェックし、指定された期間(90日間)使用されていないポリシーを特定。
- 使用されていないポリシーを削除。
python delete_unused_iam_policies.py
まとめ
このPythonスクリプトを使用することで、一定期間使用されていないカスタマー管理IAMポリシーを効率的に削除することができます。定期的にこのスクリプトを実行することで、AWSアカウント内のポリシー管理を簡素化し、セキュリティを強化することができます。
Discussion