Format på policy
AWS sine policydokumenter er vanligvis på JSON-form, og er på følgende form:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowBasics",
"Effect": "Allow",
"Action": [
"s3:HeadObject",
"s3:ListBucket",
"s3:GetObject",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::1003-green-bucket-1",
"arn:aws:s3:::1003-green-bucket-1/*",
"arn:aws:s3:::1003-green-bucket-2",
"arn:aws:s3:::1003-green-bucket-2/*"
],
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"127.0.0.1",
"127.0.0.2"
]
}
}
}
]
}
Kort fortalt viser version hvilken språksyntaks policien skal følge, hvorav gjeldende standard er "2012-10-17". Under statement finner vi komponentene som tilsier hvilke tilganger som gjelder, og på hva:
- Sid: Forklarende navn på policiens funksjon. Valgfritt.
- Effect: Behold denne på "Allow".
- Action: En liste over hvilke s3-kall som skal være tillatt. Sett eventuelt "*" for alle.
- Resource: En liste over hvilke bøtter IAM-brukeren skal ha tilgang til. Her må det både angis bøttenavn, og bøttenavn/* for å gi tilgang til objekter.
- Condition: Valgfritt, kan legge til betingelser for tilgang. Vi bruker for IP-whitelisting.
Se Templater for avsnitt med flere eksempler du kan ta utgangspunkt i.
Opprettelse av policy i CMC'en
Naviger til IAM -> IAM policy -> Add New Policy. Tilsvarende som for IAM-brukere, fyll inn et passende navn, og hjemmeområde "/":

Når du klikker på "Policy Document", vil det poppe opp et vindu hvor du har mulighet til å velge rettigheter i en visuell editor. Som et utgangspunkt anbefaler vi å bytte til "JSON-fanen", hvor du kan kopiere inn et av templatene.
Eksempel med full tilgang for bøtten "1003-green-markusor-test":

Fyll inn dine detaljer i henhold til templatene, eller bytt tilbake til "Visual Editor" hvor detaljene fra json-dokumentet nå skal være fylt inn.
Tilknytning av policy til IAM-bruker
Etter å ha opprettet en policy klikker du på den, og naviger til "IAM Users"-fanen.
Klikk på "+ Attach to user", så har du en søkbar dropdown-meny på venstre side hvor du fyller inn hvilken IAM-bruker som policien skal være tilknyttet til:

Følgelig skal dette nå være synlig under som en "Managed policy" på siden til IAM-brukeren:

Templater
Dette er .json-dokumenter som kan copy-pastes inn i redigeringsmodusen.
Husk å bytte ut med dine bøttenavn og eventuelle IP'er det skal begrenses til.
For full liste med supporterte s3-actions:
For å holde bøtten helt enkel og uten muligheter til å legge på spesielle metadataattributter e.l, så vil de fire aksjonene i første eksempelet være tilstrekkelig for de fleste tilfeller.
Dersom det er behov for flere opsjoner kan en ta utgangspunkt i templatene under.
Full tilgang
Tillater alle s3-actions for en angitt liste bøtter og IP'er.
Dette er dessuten standard for rw-policien som settes for røde bøtter.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowAll",
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::<bøttenavn>",
"arn:aws:s3:::<bøttenavn>/*"
],
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"<IP 1>",
"<IP 2>"
]
}
}
}
]
}
Read-only
En kan også benytte wildcards (*) for å inkludere et snitt av tillatte s3-kommandoer.
Det gjør at vi f.eks kan begrense tilgang til alle Get, Liste, og Head (read-only, om du vil) slik:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ReadOnly",
"Effect": "Allow",
"Action": [
"s3:List*",
"s3:Head*",
"s3:Get*"
],
"Resource": [
"arn:aws:s3:::<bøttenavn>",
"arn:aws:s3:::<bøttenavn>/*"
],
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"<IP 1>",
"<IP 2>"
]
}
}
}
]
}
Kan også være nyttig å legge inn "s3:Delete*" dersom en ønsker å slette leste objekter for staging-bøtter e.l.
Write-only
På tilsvarende vis:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ReadOnly",
"Effect": "Allow",
"Action": [
"s3:List*",
"s3:Put*"
],
"Resource": [
"arn:aws:s3:::<bøttenavn>",
"arn:aws:s3:::<bøttenavn>/*"
],
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"<IP 1>",
"<IP 2>"
]
}
}
}
]
}