Come faccio a limitare le autorizzazioni IAM di un utente di Elastic Beanstalk ad applicazioni specifiche?

3 minuti di lettura
0

Desidero limitare le autorizzazioni di AWS Identity and Access Management (IAM) di un utente di AWS Elastic Beanstalk ad applicazioni specifiche.

Breve descrizione

Utilizza una policy IAM per limitare le autorizzazioni di un utente di Elastic Beanstalk. Un utente di Elastic Beanstalk può essere un utente o un ruolo IAM. La policy può limitare l'accesso a una o più applicazioni specifiche.

Risoluzione

1.    Crea una policy IAM che limiti l'accesso alla tua applicazione Elastic Beanstalk. Utilizza la seguente policy IAM come modello di esempio.

2.    Associa la tua policy IAM all'utente o al ruolo IAM a cui desideri limitare l'accesso solo a una o più applicazioni specifiche.

Se utilizzi un servizio che si integra con Elastic Beanstalk, come Amazon Simple Storage Service (Amazon S3), consenti un maggiore accesso con restrizioni minime. Ciò è dovuto ai seguenti motivi:

  • In Elastic Beanstalk, non puoi limitare direttamente le autorizzazioni alla tua applicazione perché la struttura dell'applicazione è una raccolta di componenti. Questi componenti sono elementi come ambienti, versioni e configurazioni di ambiente. Tuttavia, puoi limitare le autorizzazioni in modo più preciso utilizzando azioni, risorse e chiavi di condizione. Per un elenco delle chiavi di condizione disponibili che puoi utilizzare per concedere l'accesso condizionale in base al tuo caso d'uso, consulta Risorse e condizioni per le azioni di Elastic Beanstalk.
  • Una policy IAM non è un modo efficace per proteggere le risorse sottostanti. Ad esempio, puoi limitare il modo in cui gli utenti interagiscono con le API di Elastic Beanstalk utilizzando la policy IAM appropriata. Tuttavia, non puoi impedire agli utenti con autorizzazioni Elastic Beanstalk di creare risorse in altri servizi AWS non correlate a Elastic Beanstalk.
  • Alcune delle risorse con cui Elastic Beanstalk si integra non supportano le autorizzazioni a livello di risorsa. Per ulteriori informazioni, consulta Servizi AWS che funzionano con IAM.

La seguente policy di esempio è progettata per concedere l'accesso completo a due applicazioni Elastic Beanstalk, App1 e App2:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticbeanstalk:UpdateApplicationVersion",
        "elasticbeanstalk:CreateApplicationVersion",
        "elasticbeanstalk:DeleteApplicationVersion"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "elasticbeanstalk:InApplication": [
            "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My App1",
            "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My App2"
          ]
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "elasticbeanstalk:DescribeAccountAttributes",
        "elasticbeanstalk:AbortEnvironmentUpdate",
        "elasticbeanstalk:TerminateEnvironment",
        "rds:*",
        "elasticbeanstalk:ValidateConfigurationSettings",
        "elasticbeanstalk:CheckDNSAvailability",
        "autoscaling:*",
        "elasticbeanstalk:RequestEnvironmentInfo",
        "elasticbeanstalk:RebuildEnvironment",
        "elasticbeanstalk:DescribeInstancesHealth",
        "elasticbeanstalk:DescribeEnvironmentHealth",
        "sns:*",
        "elasticbeanstalk:RestartAppServer",
        "s3:*",
        "cloudformation:*",
        "elasticloadbalancing:*",
        "elasticbeanstalk:CreateStorageLocation",
        "elasticbeanstalk:DescribeEnvironmentManagedActions",
        "elasticbeanstalk:SwapEnvironmentCNAMEs",
        "elasticbeanstalk:DescribeConfigurationOptions",
        "elasticbeanstalk:ApplyEnvironmentManagedAction",
        "cloudwatch:*",
        "elasticbeanstalk:CreateEnvironment",
        "elasticbeanstalk:List*",
        "elasticbeanstalk:DeleteEnvironmentConfiguration",
        "elasticbeanstalk:UpdateEnvironment",
        "ec2:*",
        "elasticbeanstalk:RetrieveEnvironmentInfo",
        "elasticbeanstalk:DescribeConfigurationSettings",
        "sqs:*",
        "dynamodb:CreateTable",
        "dynamodb:DescribeTable"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:*"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/aws-elasticbeanstalk-ec2-role",
        "arn:aws:iam::123456789012:role/aws-elasticbeanstalk-service-role",
        "arn:aws:iam::123456789012:instance-profile/aws-elasticbeanstalk-ec2-role"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "elasticbeanstalk:DescribeEvents",
        "elasticbeanstalk:DescribeApplications",
        "elasticbeanstalk:AddTags",
        "elasticbeanstalk:ListPlatformVersions"
      ],
      "Resource": [
        "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My App1",
        "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My App2"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "elasticbeanstalk:AddTags",
        "elasticbeanstalk:Describe*"
      ],
      "Resource": [
        "arn:aws:elasticbeanstalk:*::platform/*",
        "arn:aws:elasticbeanstalk:*:*:environment/*/*",
        "arn:aws:elasticbeanstalk:*:*:application/*",
        "arn:aws:elasticbeanstalk:*::solutionstack/*",
        "arn:aws:elasticbeanstalk:*:*:applicationversion/*/*",
        "arn:aws:elasticbeanstalk:*:*:configurationtemplate/*/*"
      ],
      "Condition": {
        "StringEquals": {
          "elasticbeanstalk:InApplication": [
            "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My App1",
            "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My App2"
          ]
        }
      }
    }
  ]
}

Per altri casi d'uso ed esempi, consulta Esempio di policy basate sulle autorizzazioni delle risorse o Esempio di policy basate su policy gestite.


AWS UFFICIALE
AWS UFFICIALEAggiornata 4 anni fa