¿Cómo puedo restringir los permisos de IAM de un usuario de Elastic Beanstalk a aplicaciones específicas?

3 minutos de lectura
0

Quiero restringir los permisos de AWS Identity and Access Management (IAM) de un usuario de AWS Elastic Beanstalk a aplicaciones específicas.

Descripción breve

Utilice una política de IAM para restringir los permisos de un usuario de Elastic Beanstalk. Un usuario de Elastic Beanstalk puede ser un usuario o un rol de IAM. La política puede restringir el acceso a una o varias aplicaciones específicas.

Resolución

1.Cree una política de IAM que restrinja el acceso a la aplicación de Elastic Beanstalk. Utilice la siguiente política de IAM como plantilla de ejemplo.

2.Adjunte su política de IAM al usuario o rol de IAM al que desee restringir el acceso únicamente a una aplicación o aplicaciones específicas.

Si utiliza un servicio que se integra con Elastic Beanstalk, como Amazon Simple Storage Service (Amazon S3), permita un mayor acceso con restricciones mínimas. Esto se debe a las siguientes razones:

  • En Elastic Beanstalk, no puede restringir directamente los permisos de la aplicación porque la estructura de la aplicación es un conjunto de componentes. Estos componentes son elementos tales como entornos, versiones y configuraciones de entorno. Sin embargo, puede restringir los permisos de forma más precisa mediante acciones, recursos y claves de condiciones. Para obtener una lista de las claves de condiciones disponibles que puede utilizar para conceder el acceso condicional según su caso de uso, consulte Recursos y condiciones de las acciones de Elastic Beanstalk.
  • Una política de IAM no es una forma eficaz de proteger los recursos subyacentes. Por ejemplo, puede restringir la forma en que los usuarios interactúan con las API de Elastic Beanstalk mediante la política de IAM adecuada. Sin embargo, no puede impedir que los usuarios con permisos de Elastic Beanstalk creen recursos en otros servicios de AWS que no estén relacionados con Elastic Beanstalk.
  • Algunos de los recursos con los que se integra Elastic Beanstalk no admiten permisos de nivel de recursos. Para obtener más información, consulte los servicios de AWS que funcionan con IAM.

El siguiente ejemplo de política está diseñado para conceder acceso completo a dos aplicaciones de Elastic Beanstalk, App1 y 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"
          ]
        }
      }
    }
  ]
}

Para ver más casos de uso y ejemplos, consulte Ejemplos de políticas basadas en permisos de recursos o Ejemplos de políticas basadas en políticas gestionadas.


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 4 años