import boto3 from datetime import datetime from datetime import timedelta from datetime import timezone def list_secrets(): """ List Secrets Manager secrets. Args: source_account_id (str): AWS account ID Returns: list: list of Secrets Manager secret names """ client = boto3.client('secretsmanager') paginator = client.get_paginator('list_secrets') response_iterator = paginator.paginate( IncludePlannedDeletion=False) secret_list = [] for response in response_iterator: if 'SecretList' in response: for secret in response['SecretList']: secret_list.append(secret['Name']) return secret_list def main(): "Collect stale secrets into a file." client = boto3.client('secretsmanager') secrets = list_secrets() cutoff_date = datetime.now(timezone.utc) - timedelta(days=180) file1 = open("SecretsLastAccessedDate.txt", "w") file2 =open("StaleSecrets.txt", "w") file3 =open("SecretsWithoutLastAccessedDate.txt", "w") for secret in secrets: secret_metadata = client.describe_secret(SecretId=secret) if 'LastAccessedDate' in secret_metadata: secret_last_accessed = secret_metadata['LastAccessedDate'].replace(tzinfo=timezone.utc) if secret_last_accessed < cutoff_date: file1.write(f'Secret: {secret}: LastAccessedDate {secret_last_accessed}\n' ) file2.write(f'{secret}\n') else: file1.write(f'Secret without LastAccessedDate metadata: {secret}\n') file2.write(f'{secret}\n') file3.write(f'{secret}\n') file1.close() file2.close() file3.close() if __name__ == '__main__': main()