# AWS - Secrets Manager Persistence {{#include ../../../banners/hacktricks-training.md}} ## Secrets Manager अधिक जानकारी के लिए देखें: {{#ref}} ../aws-services/aws-secrets-manager-enum.md {{#endref}} ### संसाधन नीतियों के माध्यम से यह **बाहरी खातों को रहस्यों तक पहुँच प्रदान करना** संभव है संसाधन नीतियों के माध्यम से। अधिक जानकारी के लिए [**Secrets Manager Privesc पृष्ठ**](../aws-privilege-escalation/aws-secrets-manager-privesc.md) देखें। ध्यान दें कि **एक रहस्य तक पहुँचने के लिए**, बाहरी खाते को **रहस्य को एन्क्रिप्ट करने वाले KMS कुंजी तक भी पहुँच की आवश्यकता होगी**। ### Secrets Rotate Lambda के माध्यम से स्वचालित रूप से **रहस्यों को घुमाने** के लिए एक कॉन्फ़िगर किया गया **Lambda** कॉल किया जाता है। यदि एक हमलावर **कोड** को **बदल** सकता है, तो वह सीधे **नए रहस्य को** अपने लिए **बाहर निकाल** सकता है। यहाँ इस प्रकार की कार्रवाई के लिए लैम्ब्डा कोड ऐसा दिख सकता है: ```python import boto3 def rotate_secrets(event, context): # Create a Secrets Manager client client = boto3.client('secretsmanager') # Retrieve the current secret value secret_value = client.get_secret_value(SecretId='example_secret_id')['SecretString'] # Rotate the secret by updating its value new_secret_value = rotate_secret(secret_value) client.update_secret(SecretId='example_secret_id', SecretString=new_secret_value) def rotate_secret(secret_value): # Perform the rotation logic here, e.g., generate a new password # Example: Generate a new password new_secret_value = generate_password() return new_secret_value def generate_password(): # Example: Generate a random password using the secrets module import secrets import string password = ''.join(secrets.choice(string.ascii_letters + string.digits) for i in range(16)) return password ``` {{#include ../../../banners/hacktricks-training.md}}