Video: Introduction to Amazon Web Services by Leo Zhadanovsky 2024
Det här är en uppenbar fråga när det handlar om proxier från tredje part: Om dessa verktyg fungerar för dina räkning, hur vet Amazon Web Services (AWS) att personen för vars räkning de agerar är faktiskt du? Med andra ord, hur kan AWS autentisera din identitet för att säkerställa att de kommandon den tar emot är från dig?
Faktum är att samma fråga är giltigt även om du direkt kan interagera med AWS API. Hur kan AWS validera din identitet för att säkerställa att det endast utför kommandon för dig?
Ett sätt är självklart att du ska inkludera ditt användarnamn och lösenord för ditt konto i API-samtalen. Även om vissa molnleverantörer tar detta tillvägagångssätt, gör Amazon inte det.
I stället för att förlita sig på användarnamn och lösenord beror det på två andra identifierare för att autentisera sina API-serviceanrop: åtkomstnyckeln och den hemliga åtkomstnyckeln. Det använder dessa nycklar i serviceanrop för att genomföra säkerhet på ett sätt som är mycket säkrare än att bara använda ditt användarnamn och lösenord.
Så hur fungerar det? När du registrerar dig för ett konto hos AWS har du möjlighet att skapa en åtkomstnyckel och ha en hemlig åtkomstnyckel som skickas till dig. Var och en är en lång rad slumpmässiga tecken, och den hemliga åtkomstnyckeln är den längre av de två. När du hämtar den hemliga åtkomstnyckeln bör du lagra den någonstans väldigt säker eftersom det är nyckeln (ledsen - dålig ordlista) för att implementera säkra telefonsamtal.
När du har gjort det, har både du och Amazon en kopia av åtkomstnyckeln och den hemliga åtkomstnyckeln. Att behålla en kopia av den hemliga åtkomstnyckeln är avgörande eftersom det används för att kryptera information som skickas fram och tillbaka mellan dig och AWS, och om du inte har den hemliga åtkomstnyckeln kan du inte utföra några telefonsamtal på AWS.
Hur de två nycklarna används är konceptuellt enkla, även om det är lite utmanande i detalj.
För varje serviceanrop du vill utföra, gör du (eller ett verktyg som fungerar för dina räkning) följande:
-
Skapa nyttjandevallet för serviceanrop.
Detta är de data du behöver skicka till AWS. Det kan vara ett objekt du vill lagra i S3 eller bildidentifieraren för en bild du vill starta. (Du kommer också att bifoga andra delar av informationen till nyttolasten, men eftersom de varierar beroende på specifikationerna för serviceanropet, är de inte listade här. En del data är den aktuella tiden.)
-
Krypter nyttolasten med hjälp av den hemliga åtkomstnyckeln.
Det gör att ingen kan undersöka nyttolasten och upptäcka vad som finns i den.
-
Signera digitalt den krypterade nyttolasten genom att lägga till den hemliga åtkomstnyckeln till den krypterade nyttolasten och utföra en digital signaturprocess med hjälp av den hemliga åtkomstnyckeln.
Hemliga åtkomstnycklar är längre och mer slumpmässiga än typiska användarlösenord. Den långa hemliga åtkomstnyckeln gör krypteringen utförd med den säkrare än den skulle vara om den utfördes med ett typiskt användarlösenord.
-
Skicka den totala krypterade nyttolasten tillsammans med din åtkomstnyckel till AWS via ett serviceanrop.
Amazon använder accessnyckeln för att leta upp din hemliga åtkomstnyckel, som den använder för att dekryptera nyttolasten. Om den dekrypterade nyttolasten representerar läsbar text som kan utföras, utför AWS serviceanropet. I annat fall sluts det att något är fel med servicesamtalet (kanske det kallades av en ondskådlig skådespelare) och utför inte serviceanropet.
Utöver den just beskrivna krypteringen har AWS två andra metoder som används för att säkerställa legitimiteten för serviceanropet:
-
Den första är baserad på datuminformationen som ingår i serviceloppets nyttolast, som den använder för att bestämma huruvida den tid som är förknippad med upprättandet av tjänsteanropet är lämpligt; Om datumet i serviceanropet skiljer sig mycket från vad det borde vara (mycket tidigare eller senare än den aktuella tiden, med andra ord), konstaterar AWS att det inte är ett legitimt serviceanrop och kassera det.
-
Den andra ytterligare säkerhetsåtgärden innebär en kontrollsumma som du beräknar för nyttolast. (A checksum är ett tal som representerar innehållet i ett meddelande.) AWS beräknar en kontrollsumma för nyttolasten. Om kontrollsumman inte överensstämmer med din, förhindrar den serviceanropet och utförs inte.
Detta kontrollsumma tillvägagångssätt säkerställer att ingen tampar med innehållet i ett meddelande och förhindrar en illvillig skådespelare från att fånga upp ett legitimt telefonsamtal och ändra det för att utföra en oacceptabel åtgärd. Om någon tappar med meddelandet, när AWS beräknar ett kontrollsumma, motsvarar kontrollsummen inte längre den som ingår i meddelandet, och AWS vägrar att utföra serviceanropet.
Om du, som de flesta AWS-användare, använder en proxy-metod för att interagera med AWS - AWS-hanteringskonsolen, ett språkbibliotek eller ett tredjepartsverktyg - du måste ange din åtkomstnyckel och hemlig åtkomstnyckel till proxyen. När proxyen utförs AWS-servicesamtal på dina vägnar, innehåller den åtkomstnyckeln i samtalet och använder den hemliga åtkomstnyckeln för att utföra nyttolastkryptering.
På grund av den viktiga roll som dessa nycklar uppfyller i AWS, bör du dela dem bara med enheter du litar på. Om du vill prova ett nytt verktyg från tredje part och du inte vet mycket om företaget ska du ställa in ett AWS-testkonto för rättegången istället för att använda ditt AWS-kontouppgifter för produktion.
Om du bestämmer dig för att inte gå vidare med verktyget kan du släppa det, avsluta testet AWS-kontot och fortsätta, oroade sig om eventuella säkerhetsproblem i dina huvudproduktionskonto. Naturligtvis kan du alltid skapa nya åtkomstnycklar och hemliga åtkomstnycklar, men med hjälp av dina produktionsnycklar för test och då ändras nycklarna, vilket innebär att du behöver uppdatera varje plats som refererar till dina befintliga nycklar.
Om du är som många andra AWS-användare använder du ett antal verktyg och bibliotek och går tillbaka till dem för att uppdatera dina nycklar är en smärta. Du är bättre att använda icke-produktionskonton för att testa nya verktyg.