Lämna inte Lösenord i Din Kod, Använd AWS Hemligheter Manager Istället

0
224

AWS Hemligheter Manager gör som arbetar med access-nycklar (som databas med referenser) lättare genom att lagra dem på distans och kontroll av åtkomst av dem bakom IAM behörigheter. Här kan du smidigt rotera tillgång till nycklar och hämta den senaste när det behövs.

Vad Gör Hemligheter Chef Göra?

Här är ett exempel. Säg att du skapar en bygga skript för dina servrar som kommer att automatisera installationen, vanligtvis att använda sig av Auto Scaling och automatiserad deployment. Du måste ansluta till WordPress till en extern MySQL-servern.

Den enklaste lösningen skulle vara att lagra MySQL-lösenord i klartext som en del av att bygga skript. Detta innebär givetvis inte att öka säkerheten, och ohanterbart långt utöver en enda instans som drivs av en enskild anställd. Dessutom, om du är som skiljer ditt dev och prod-miljöer, så att denna hemlighet måste uppdateras för varje miljö, vilket är jobbigt.

Bättre lösning är Hemligheter Manager. I stället för att lagra den MySQL-lösenord i klartext, du förvara den i Hemligheter Manager, och när du behöver använda den, du utför en API-anrop för att Hemligheter Manager, som returnerar den hemlighet. Detta gör att du till säker tillgång till dina hemligheter med hjälp IAM roller och behörigheter, vilket är ett mycket bättre system, och en som du redan använder på om ditt företag är på AWS.

Dessutom, eftersom Hemligheter Manager fungerar som en enda vederhäftiga uppgifter butik, det gör rotation av hemligheter mycket mer lätt, vilket är en viktig del av pågående säkerhet.

Bara för att vara tydlig—Hemligheter Manager inte automatiskt gör hanteringen viktiga hemligheter trivialt. I slutet av dagen, du är ändå begär känslig information som kommer att lagras på hårddisken eller i minnet på din server. Vem som helst som kan komma åt servern kommer fortfarande kunna komma åt hemligheten, och du måste ha bra IAM behörigheter politik i stället för att låsa tillgång. Dock, utan Hemligheter Manager, skulle du inte kunna styra tillgång till alla använder IAM, och skulle potentiellt viktiga nycklar lagras på andra platser, såsom lättillgängligt Git repor.

Hemligheter Manager kan användas för att lagra alla typer av nyckelpersoner, inklusive JSON. Men det är vanligen används för att lagra databasen referenser, och som sådan har inbyggd integration för RDS som automatiskt kan konfigurera och rotera autentiseringsuppgifter för dig.

Hur man Använder Hemligheter Manager

Chef över till Hemligheter Manager-konsolen och klicka på “Lagra Ett Nytt Hemligt.”

Om du ställer upp en hemlighet för att lagra autentiseringsuppgifter för RDS, eller någon av AWS andra DB-tjänster, kan du välja att typ, ange användarnamn och lösenord och väljer den databas som du vill använda med denna hemlighet.

Om du lagra något annat, kommer du vill välja “Annan Typ Av Hemliga.” Om du lagra en serie av nyckel-värde-par, kan du ange dem här, men om du har en mer komplex JSON schema, du kan komma in i det hela så klartext under “Vanlig” – fliken.

Klicka på “Nästa, ge den ett namn, och alla taggar du vill lägga till de organisatoriska syften.

På nästa skärm kan du välja att konfigurera automatisk rotation. Detta kommer att kräva en Lambda funktion du väljer varje månad eller så, och vrid nyckeln till ett nytt värde. Du vill förmodligen för att ställa in din Lambda-funktion för att rensa cachar din klient program, så att de alla måste hämta nya hemliga.

Klicka på “Nästa” och klicka på “Spara” för att skapa hemlighet.

Tillgång till hemligheten är ganska lätt. Förutsatt att du har AWS CLI installerad och konfigurerad med en användare eller roll som har tillstånd att hämta hemlig, kan du öppna den med hjälp secretsmanager få-utsöndrar-värde. Detta returnerar JSON-utgång, så kommer du förmodligen vill skicka det till jq för bearbetning.

aws secretsmanager få-secret-värde-hemlig-id Confidential_Info | jq

Detta returnerar en del metadata om din sträng liksom string sig i SecretString parameter. Det är kodad i en enda sträng, men du kan använda jq är fromjson direktiv för att återgå till den faktiska JSON värdet av strängen.

| jq ‘.SecretString | fromjson’

Om du hämtar hemligheter mycket ofta (vid körning), du vill använda dig av en klient-sidan cache så att du inte skickar tusentals API-förfrågningar varje sekund. AWS ger några klientsidan bibliotek för att arbeta med Hemligheter Manager, men du kan alltid genomföra själv på det språk du valt.

Om du vill automatisera skapandet av hemligheter, kan du göra så med skapa-secret:

aws secretsmanager skapa-secret-namn <värde> – hemlig-strängen <värde>

Konfigurera IAM Tillgång

Du kommer att vilja ställa upp egna IAM politik för att ge läsbehörighet till enskilda hemligheter baserat på Amazon Resurs Namn (ARN). Från IAM Management Console, skapa en ny roll (eller redigera din EC2 exempel befintlig), och lägg till “Läs” för Hemligheter Manager.

Nedan, kommer du vill lägga till ARN för att begränsa åtkomsten. Gå in i den Hemliga ID och klicka på “Lägg till”.

Skapa en ny politik, bifoga roll att din EC2 exempel om det är nödvändigt, och testa för att kontrollera att du endast har tillgång till den hemliga tilldelats politik.