Laat geen Wachtwoorden in Uw Code; Gebruik AWS Geheimen Manager in Plaats

0
48

AWS Geheimen Manager maakt het werken met sneltoetsen (zoals database referenties) makkelijker door ze op te slaan op afstand en controle van de toegang van hen achter de IAM-machtigingen. Dit kunt u soepel draaien toegang tot de sleutels en het ophalen van de meest recente wanneer dat nodig is.

Wat Doet Geheimen Manager Doen?

Hier is een voorbeeld. Zeggen dat je het maken van een build script voor uw servers zal het automatiseren van uw installatie proces, meestal om gebruik te maken van Automatische Schaling en geautomatiseerde implementatie. U nodig hebt om verbinding te maken WordPress naar een externe MySQL server.

De eenvoudigste oplossing zou zijn voor het opslaan van het MySQL wachtwoord in leesbare tekst als onderdeel van het build script. Dit kan uiteraard niet uit veiligheidsoverwegingen, en niet op schaal veel verder dan een enkel exemplaar bediend door een enkele werknemer. Bovendien, als u scheiden van uw dev en prod omgevingen, dit geheim moet worden bijgewerkt voor elke omgeving, wat een gedoe.

De betere oplossing is de Geheimen van de Manager. In plaats van het opslaan van het MySQL wachtwoord in leesbare tekst, bewaar je het in de Geheimen van de Manager, en wanneer u nodig hebt om het te gebruiken, voert u een API-aanroep Geheimen Manager, die resulteert in het geheim. Dit kunt u veilig toegang tot de geheimen van het gebruik van IAM rollen en machtigingen, dat is een veel beter systeem, en een die u al gebruikt als uw bedrijf is op AWS.

Ook, omdat Geheimen Manager fungeert als één bindende gegevens op te slaan, het maakt rotatie van geheimen nog veel meer eenvoudig, en dat is een belangrijk onderdeel van de lopende veiligheid.

Even voor de duidelijkheid—Geheimen Manager niet automatisch voor zorgen dat het verwerken van belangrijke geheimen triviaal. Aan het einde van de dag, je bent nog steeds gevraagd om gevoelige informatie dat wordt opgeslagen op de harde schijf of in het geheugen op de server. Iedereen die toegang heeft tot de server nog steeds in staat zijn om toegang te krijgen tot het geheim, en je moet een goede IAM machtigingen beleid op zijn plaats te vergrendelen toegang. Echter, zonder Geheimen Manager, zou u niet in staat om deze toegang op elk gebruik van IAM, en zou mogelijk een belangrijke sleutels in andere plaatsen, zoals gemakkelijk bereikbaar Git repo ‘ s.

Geheimen Manager kan worden gebruikt voor het opslaan van een soort sleutel, met inbegrip van JSON. Echter, het is vaak gebruikt voor het opslaan van de database referenties, en als zodanig is gebouwd in integratie voor RDS dat automatisch kan configureren en draaien van de referenties voor u.

Hoe te Gebruiken Geheimen Manager

Ga dan naar de Geheimen Manager-console en klik op “Opslaan van Een Nieuw Geheim.”

Als je het opzetten van een geheime referenties opslaan voor RDS, of een van AWS andere DB services, kunt u dat als het type, voer de gebruikersnaam en het wachtwoord in en selecteert u de database die u wilt gebruiken met dit geheim.

Als je opslaan van iets anders, u wilt selecteren-de aard Van het Geheim.” Als je opslaan van een serie van sleutel / waarde-paren, kunt u ze hier, maar als je een meer complexe JSON schema, kunt u in de hele zaak als leesbare tekst onder de “Plaintext” tabblad.

Klik op “Next” geef het een naam, en alle labels die u mogelijk wilt toevoegen voor organisatorische doeleinden.

Op het volgende scherm heb je de mogelijkheid van het instellen van automatische rotatie. Dit roept een Lambda functie van uw keuze iedere maand of zo, en draai de sleutel voor een nieuwe waarde. Waarschijnlijk wilt u het instellen van uw Lambda functie het legen van de cache van uw client-toepassingen, zodat zij alle moeten halen van het nieuwe geheim.

Klik op “Volgende” en klik op “Opslaan” om het geheim.

De toegang tot het geheim is vrij eenvoudig. Mits je de AWS CLI is geïnstalleerd en geconfigureerd met een gebruiker of rol die de rechten heeft voor het halen van het geheim, dat je kunt openen met behulp van secretsmanager krijgen-scheiden-waarde. Dit geeft JSON output, dus je zult waarschijnlijk willen pijp aan jq voor de verwerking.

aws secretsmanager krijgen-geheim-waarde –geheim-id Confidential_Info | jq

Dit geeft sommige metagegevens over je string evenals de snaar zelf in de SecretString parameter. Het is gecodeerd in een enkele snaar, maar u kunt gebruik maken van jq ‘ s fromjson richtlijn om de werkelijke JSON-waarde van de string.

| jq ‘.SecretString | fromjson’

Als je het ophalen van geheimen zeer vaak (at runtime), zal je gebruik wilt maken van een client-side cache, zodat je niet het versturen van duizenden API-verzoeken per seconde. AWS biedt een enkele client-side bibliotheken voor het werken met Geheimen Manager, maar u kunt altijd het implementeren van het zelf in de taal van uw keuze.

Als u wilt automatiseren van het maken van geheimen, kunt u dat doen met het maken van-geheim:

aws secretsmanager maken-geheim-naam <waarde> –geheim-string <waarde>

Het configureren van IAM Toegang

Je wilt het instellen van aangepaste IAM-beleid om leestoegang te verlenen aan de individuele geheimen gebaseerd op de Amazon-Resource-Naam (ARN). Van de IAM Management Console, een nieuwe rol maken (of het bewerken van de EC2 bijvoorbeeld de bestaande), en het toevoegen van “Lezen” toegang voor Geheimen Manager.

Hieronder zult u wilt toevoegen een ARN om de toegang te beperken. Voer in het Geheim-ID in en klik op “Toevoegen”.

Het maken van het nieuwe beleid, bevestigt u de rol van uw EC2 bijvoorbeeld als dat nodig is, en test om te controleren of dat u alleen toegang tot de geheime toegewezen aan het beleid.