Avancerade IAM-policyer och behörigheter
Utforma mycket detaljerade IAM-policyer med villkor och resursnivåbehörigheter för att upprätthålla principen om minsta privilegium för dina Lambda-funktioner
Avancerade IAM-policyer och behörigheter är en gratis lektion i Serverlös utveckling med AWS Lambda på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Serverlös utveckling med AWS Lambda, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Serverlös utveckling med AWS Lambda innehåller totalt 4 lektioner.
Bortom grundläggande IAM-roller
Välkommen! I tidigare lektioner har Ni lärt Er att skapa grundläggande IAM-roller för Lambda-funktionerna. Dessa roller ger funktionerna behörighet att interagera med andra AWS-tjänster.
Men vad gör Ni om Ni behöver mer exakt kontroll? I den här lektionen går vi igenom avancerade IAM-principer för att upprätthålla principen om minsta privilegium och säkerställa att funktionerna *endast* har de behörigheter de absolut behöver.
Principen om minsta privilegium (PoLP)
Principen om minsta privilegium (PoLP) är ett centralt säkerhetskoncept. Den innebär att en entitet (som en Lambda-funktion) endast får de behörigheter som krävs för att utföra sin avsedda uppgift, och inget mer.
- Varför det är viktigt: Minskar konsekvenserna av säkerhetsintrång.
- Så hjälper det: Begränsar vad en angripare kan göra om funktionen tas över.
- Vårt mål: Gå från breda behörigheter till mycket specifika behörigheter.
Behörigheter på resursnivå
I stället för att ge åtkomst till *alla* resurser av en viss typ (t.ex. alla S3-buckets) kan Ni ange exakt vilka resurser en funktion får åtkomst till. Detta kallas behörigheter på resursnivå.
Det gör Ni genom att använda ett Amazon Resource Name (ARN) i principens Resource-element.
Exempel: specifik S3-åtkomst
Här är ett utdrag ur en policy som ger en Lambda-funktion behörighet att endast läsa objekt från en specifik S3-bucket med namnet my-app-data-bucket, och inga andra buckets.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": "arn:aws:s3:::my-app-data-bucket/*"
}
]
}Förstå policyvillkor
För ännu mer detaljerad styrning stöder IAM-principer villkor. Villkor anger *när* ett principuttalande gäller.
Ni kan använda villkor för att kontrollera exempelvis tid på dagen, anroparens IP-adress, specifika taggar på resurser eller till och med delar av en S3-objektnyckel.
Vanliga villkorsnycklar
AWS tillhandahåller många villkorsnycklar som Ni kan använda. Några vanliga är:
aws:SourceIp: Begränsar åtkomst baserat på källans IP-adress.aws:PrincipalTag: Ger behörigheter om anroparen har en viss tagg.s3:prefix: Begränsar S3-åtgärder till objekt med ett visst nyckelprefix.StringEquals,NumericLessThanosv.: Operatorer för att jämföra värden.
Exempel: villkor för IP-adress
Den här policyn tillåter en åtgärd endast om begäran kommer från ett specifikt IP-adressintervall. Detta är användbart för administrativ åtkomst eller interna verktyg.
Obs! Lambda-funktioner har vanligtvis ingen statisk käll-IP-adress om de inte körs i en VPC med en NAT Gateway.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": "s3:*",
"Resource": "arn:aws:s3:::my-secure-bucket/*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": "203.0.113.0/24"
}
}
}
]
}Exempel: Villkor för S3-prefix
Här kan en Lambda-funktion endast skriva objekt till en specifik mapp (prefix) i en S3-bucket. Det säkerställer att den inte råkar skriva över kritiska data i andra delar av bucketen.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": "arn:aws:s3:::my-upload-bucket/uploads/*",
"Condition": {
"StringEquals": {
"s3:prefix": "uploads/"
}
}
}
]
}Bästa praxis för detaljerade policyer
När Ni utformar avancerade IAM-policyer:
- Börja med Deny: Det är ofta säkrare att neka allt som standard och uttryckligen tillåta det som behövs.
- Testa noggrant: Felkonfigurerade policyer kan få applikationer att sluta fungera eller skapa säkerhetsluckor.
- Granska regelbundet: När Er applikation utvecklas bör även Era policyer göra det.
- Använd hanterade policyer (där det passar): För vanliga interaktioner med AWS-tjänster är AWS-hanterade policyer en bra utgångspunkt innan Ni anpassar dem.
Kontroll av policydetaljer
Anta att en Lambda-funktion bearbetar nya bilder som laddas upp till en S3-bucket med namnet my-image-gallery. Den behöver läsa bilder från prefixet raw/ och skriva bearbetade bilder till prefixet processed/.
Vilket IAM-policyuttalande tillämpar korrekt principen om minsta privilegium för den här funktionen?
Sammanfattning: Avancerade IAM-policyer
I den här lektionen har vi utforskat hur Ni kan gå längre än grundläggande IAM-roller och skapa mycket detaljerade policyer för Era Lambda-funktioner.
- Vi fokuserade på principen om minsta privilegium.
- Ni har lärt Er om resursnivåbehörigheter med hjälp av ARN:er.
- Vi gick igenom hur Ni kan använda villkor (till exempel
aws:SourceIpochs3:prefix) för att förfina policyernas effekter.
Genom att tillämpa dessa tekniker kan Ni avsevärt förbättra säkerhetsnivån i Era serverlösa applikationer.
Lär dig Serverlös utveckling med AWS Lambda med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 12
- Lektioner
- 48
Vanliga frågor
Är lektionen ”Avancerade IAM-policyer och behörigheter” gratis?
Ja – hela texten till ”Avancerade IAM-policyer och behörigheter” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Serverlös utveckling med AWS Lambda, kan Ni uppgradera till CoddyKit PRO. Kursen i Serverlös utveckling med AWS Lambda innehåller totalt 4 lektioner.
Vad lär jag mig i ”Avancerade IAM-policyer och behörigheter”?
Utforma mycket detaljerade IAM-policyer med villkor och resursnivåbehörigheter för att upprätthålla principen om minsta privilegium för dina Lambda-funktioner Ni övar på Serverlös utveckling med AWS Lambda med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Serverlös utveckling med AWS Lambda?
Du behöver inga förkunskaper. Utbildningen i Serverlös utveckling med AWS Lambda på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.
Hur lång tid tar lektionen ”Avancerade IAM-policyer och behörigheter”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Serverlös utveckling med AWS Lambda-lektionen?
Ja. Varje Serverlös utveckling med AWS Lambda-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Avancerade IAM-policyer och behörigheter
- Hantering av hemligheter med AWS Secrets Manager
- Distribuerad spårning med AWS X-Ray
- Strukturerad loggning och korrelations-ID:n