Utilizzare IAM per consentire all'utente di modificare i gruppi di sicurezza AWS / EC2?


16

Sto cercando di concedere a un gruppo IAM la possibilità di modificare i nostri gruppi di sicurezza EC2, ma non sono stato in grado di farlo funzionare senza concedere l'accesso a tutto in EC2.

Ho provato diverse versioni di questo:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1392336685000",
      "Effect": "Allow",
      "Action": [
        "ec2:*"
      ],
      "Resource": [
        "arn:aws:ec2:us-east-1:<MYACCOUNTHERE>:security-group/*"
      ]
    }
  ]
}

Ma quando eseguo l'accesso con l'utente IAM, nella pagina del gruppo di sicurezza viene visualizzato un messaggio che dice "Non sei autorizzato a eseguire questa operazione".

So che l'utente / gruppo sta lavorando perché se seleziono il modello di criteri IAM per "Accesso completo Amazon EC2", l'utente può accedere a tutto in EC2.

Ovviamente non ho molta esperienza con IAM, qualsiasi aiuto sarebbe molto apprezzato.

Risposte:


13

Affinché ciò funzioni, è necessario CONSENTRE esplicitamente quanto segue:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1392679134000",
      "Effect": "Allow",
      "Action": [
        "ec2:AuthorizeSecurityGroupEgress",
        "ec2:AuthorizeSecurityGroupIngress",
        "ec2:CreateSecurityGroup",
        "ec2:DeleteSecurityGroup",
        "ec2:DescribeInstanceAttribute",
        "ec2:DescribeInstanceStatus",
        "ec2:DescribeInstances",
        "ec2:DescribeNetworkAcls",
        "ec2:DescribeSecurityGroups",
        "ec2:RevokeSecurityGroupEgress",
        "ec2:RevokeSecurityGroupIngress"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}

La politica JSON di cui sopra stabilisce sostanzialmente che l'utente abbia SOLO accesso a quanto sopra. NON avranno accesso a nient'altro. Ciò include istanze ec2, S3, IAM, cloudfront, ecc.


1
Questo ha funzionato. Grazie. L'utente può visualizzare tutti i dati dell'istanza ma non può avviare / arrestare / creare, quindi è abbastanza vicino. Pensi che ci sia un modo per indicare esattamente a quali gruppi di sicurezza possono accedere o devo lasciarlo aperto a tutti i gruppi di sicurezza?
Chris,

@ DevMan14 quindi c'è un modo per dichiarare specifici gruppi di sicurezza? quando provo un secondo la risorsa come sotto non funziona e con questo codice, qualcuno è in grado di utilizzare aws ec2 descrivono-gruppi-di sicurezza e ottenere un bel po 'di informazioni su ogni gruppo di sicurezza
nsij22

1
Se visualizzi EC2ResponseError: 403 errori vietati , poco dopo aver impostato / modificato la tua politica,
tieni

12

Se vuoi limitare la modifica a un singolo gruppo di sicurezza, penso che tu abbia bisogno di 2 dichiarazioni, per me ha funzionato:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1413232782000",
            "Effect": "Allow",
            "Action": [               
                "ec2:DescribeInstanceAttribute",
                "ec2:DescribeInstanceStatus",
                "ec2:DescribeInstances",
                "ec2:DescribeNetworkAcls",
                "ec2:DescribeSecurityGroups"              
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "Stmt1413232782001",
            "Effect": "Allow",
            "Action": [
                "ec2:AuthorizeSecurityGroupEgress",
                "ec2:AuthorizeSecurityGroupIngress",                
                "ec2:RevokeSecurityGroupEgress",
                "ec2:RevokeSecurityGroupIngress"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1:<accountid>:security-group/sg-<id>"
            ]
        }
    ]
}

DescribeInstance potrebbe non essere necessario, ma nel mio caso lo volevo, quindi non ho testato senza di esso


1
Sono stato in grado di modificare le regole SG senza le regole DescirbeInstance. Ad esempio, le opzioni globali * vengono impostate solo come: "ec2:DescribeNetworkAcls", "ec2:DescribeSecurityGroups"
storm_m2138

1

Sembra che il tuo gruppo di sicurezza sia forse utilizzato da un'istanza o da un'altra risorsa EC2. Puoi provare:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1392336685000",
      "Effect": "Allow",
      "Action": [
        "ec2:*"
      ],
      "Resource": [
        "arn:aws:ec2:us-east-1:<MYACCOUNTHERE>:instance/*",
        "arn:aws:ec2:us-east-1:<MYACCOUNTHERE>:security-group/*"
      ]
    }
  ]
}

Grazie per la risposta, ma non ha funzionato. Sì, i gruppi di sicurezza vengono utilizzati da più istanze: è importante che siano "gruppi di sicurezza EC2" e non "gruppi di sicurezza VPC"? - O forse sto sbagliando qualcos'altro perché ciò non consente nemmeno all'utente di vedere le Istanze, cosa che mi aspettavo quasi di fare.
Chris,

1

Stavo cercando una risposta per una domanda che @ nsij22 ha posto nei commenti della risposta accettata. Sfortunatamente, sembra che non sia possibile. Secondo IAM Policy Simulator , solo le seguenti azioni dalla risposta di @ DevMan14 possono essere utilizzate con risorse specifiche:

  • DeleteSecurityGroup
  • AuthorizeSecurityGroupEgress
  • AuthorizeSecurityGroupIngress
  • RevokeSecurityGroupEgress
  • RevokeSecurityGroupIngress

Per tutto il resto, IAM Policy Simulator dice:

Questa azione non supporta le autorizzazioni a livello di risorsa. I criteri che concedono l'accesso devono specificare "*" nell'elemento risorsa.

Sembra così:

immagine dello schermo.

Tutti "permessi" e "negati" sono uguali, quindi li ho compressi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.