Utforming av IAM policy

 

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>"
                   ]
                }
             }
         }
     ]
 }
Emneord: S3, Objektlagring, lagring Av Markus S?rensen
Publisert 24. feb. 2024 10:19 - Sist endret 5. apr. 2024 16:55