Policy di esempio basate su autorizzazioni a livello di risorsa - AWS Elastic Beanstalk

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Policy di esempio basate su autorizzazioni a livello di risorsa

Questa sezione esamina un caso d'uso per il controllo delle autorizzazioni utente per le operazioni Elastic Beanstalk che accedono a specifiche risorse Elastic Beanstalk. Esamineremo le policy di esempio che supportano il caso d'uso. Per ulteriori informazioni sulle policy per le risorse Elastic Beanstalk, consulta Creazione di una policy utente personalizzata. Per informazioni su come collegare le policy a utenti e gruppi, consultare Gestione di policy IAM in Utilizzo di AWS Identity and Access Management.

In questo caso d'uso Example Corp. è una piccola società di consulenza che sviluppa applicazioni per due clienti diversi. John è il responsabile di sviluppo che supervisiona lo sviluppo delle due applicazioni Elastic Beanstalk, app1 e app2. John si occupa dello sviluppo e di alcuni test sulle due applicazioni ed è l'unico che può aggiornare l'ambiente di produzione per entrambe le applicazioni. Queste sono le autorizzazioni necessarie per app1 e app2:

  • Visualizzazione di applicazioni, versioni di applicazioni, ambienti e modelli di configurazione

  • Creazione di versioni di applicazioni e relativa distribuzione nell'ambiente di gestione temporanea

  • Aggiornamento dell'ambiente di produzione

  • Creazione e terminazione di ambienti

Jill è un tester che deve accedere per visualizzare le risorse seguenti per monitorare e testare le due applicazioni: applicazioni, versioni di applicazioni, ambienti e modelli di configurazione. Tuttavia, non deve essere in grado di apportare modifiche alle risorse Elastic Beanstalk.

Jack è lo sviluppatore per app1 che deve accedere per visualizzare tutte le risorse per app1 e deve creare versioni di applicazione per app1 e distribuirle nell'ambiente di gestione temporanea.

Judy è l'amministratore dell'account AWS per Example Corp. che ha creato gli utenti IAM per John, Jill e Jack e collega a tali utenti le seguenti policy per concedere le autorizzazioni appropriate alle applicazioni app1 e app2.

Esempio 1: John - manager di sviluppo per app1, app2

Abbiamo suddiviso la policy di John in tre policy separate, in modo che siano più facili da leggere e gestire. Insieme, offrono a John le autorizzazioni necessarie per eseguire le operazioni di sviluppo, testing e distribuzione sulle due applicazioni.

La prima policy specifica le operazioni per Auto Scaling, Amazon S3, Amazon EC2, CloudWatch, Amazon SNS, Elastic Load Balancing, Amazon RDS e AWS CloudFormation. Elastic Beanstalk si basa su questi servizi aggiuntivi per effettuare il provisioning delle risorse sottostanti durante la creazione di un ambiente.

Importante: questa policy è un esempio. Offre un'ampia gamma di autorizzazioni per i prodotti AWS che Elastic Beanstalk impiega per gestire applicazioni e ambienti. Ad esempio, ec2:* consente a un utente IAM di eseguire qualsiasi operazione su una risorsa Amazon EC2 nell'account AWS. Queste autorizzazioni non sono limitate alle risorse che utilizzi con Elastic Beanstalk. Come best practice, dovresti concedere agli individui solo le autorizzazioni necessarie per eseguire le proprie funzioni.

{ "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ec2:*", "ecs:*", "ecr:*", "elasticloadbalancing:*", "autoscaling:*", "cloudwatch:*", "s3:*", "sns:*", "cloudformation:*", "dynamodb:*", "rds:*", "sqs:*", "logs:*", "iam:GetPolicyVersion", "iam:GetRole", "iam:PassRole", "iam:ListRolePolicies", "iam:ListAttachedRolePolicies", "iam:ListInstanceProfiles", "iam:ListRoles", "iam:ListServerCertificates", "acm:DescribeCertificate", "acm:ListCertificates", "codebuild:CreateProject", "codebuild:DeleteProject", "codebuild:BatchGetBuilds", "codebuild:StartBuild" ], "Resource":"*" } ] }

La seconda policy specifica le operazioni Elastic Beanstalk che John può eseguire sulle risorse app1 e app2. L'istruzione AllCallsInApplications consente tutte le operazioni Elastic Beanstalk ("elasticbeanstalk:*") eseguite su tutte le risorse all'interno di app1 e app2 (ad esempio, elasticbeanstalk:CreateEnvironment). L'istruzione AllCallsOnApplications consente tutte le operazioni Elastic Beanstalk ("elasticbeanstalk:*") sulle risorse delle applicazioni app1 e app2 (ad esempio elasticbeanstalk:DescribeApplications, elasticbeanstalk:UpdateApplication e così via). L'istruzione AllCallsOnSolutionStacks consente tutte le operazioni Elastic Beanstalk ("elasticbeanstalk:*") per le risorse dello stack di soluzioni (ad esempio elasticbeanstalk:ListAvailableSolutionStacks).

{ "Version": "2012-10-17", "Statement":[ { "Sid":"AllCallsInApplications", "Action":[ "elasticbeanstalk:*" ], "Effect":"Allow", "Resource":[ "*" ], "Condition":{ "StringEquals":{ "elasticbeanstalk:InApplication":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1", "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2" ] } } }, { "Sid":"AllCallsOnApplications", "Action":[ "elasticbeanstalk:*" ], "Effect":"Allow", "Resource":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1", "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2" ] }, { "Sid":"AllCallsOnSolutionStacks", "Action":[ "elasticbeanstalk:*" ], "Effect":"Allow", "Resource":[ "arn:aws:elasticbeanstalk:us-east-2::solutionstack/*" ] } ] }

La terza policy specifica le operazioni Elastic Beanstalk per cui la seconda policy richiede le autorizzazioni per essere completate. L'istruzione AllNonResourceCalls consente l'operazione elasticbeanstalk:CheckDNSAvailability, necessaria per chiamare elasticbeanstalk:CreateEnvironment e altre operazioni. Consente anche l'operazione elasticbeanstalk:CreateStorageLocation, necessaria per elasticbeanstalk:CreateApplication, elasticbeanstalk:CreateEnvironment e altre operazioni.

{ "Version": "2012-10-17", "Statement":[ { "Sid":"AllNonResourceCalls", "Action":[ "elasticbeanstalk:CheckDNSAvailability", "elasticbeanstalk:CreateStorageLocation" ], "Effect":"Allow", "Resource":[ "*" ] } ] }

Esempio 2: Jill - tester per app1, app2

Abbiamo suddiviso la policy di Jill in tre policy separate, in modo che siano più facili da leggere e gestire. Insieme, offrono a Jill le autorizzazioni necessarie per eseguire le operazioni di testing e monitoraggio sulle due applicazioni.

La prima policy specifica le operazioni Describe*, List* e Get* per Auto Scaling, Amazon S3, Amazon EC2, CloudWatch, Amazon SNS, Elastic Load Balancing, Amazon RDS e AWS CloudFormation (per i tipi di container non legacy) in modo che le operazioni Elastic Beanstalk siano in grado di recuperare le informazioni sulle risorse sottostanti delle applicazioni app1 e app2.

{ "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ec2:Describe*", "elasticloadbalancing:Describe*", "autoscaling:Describe*", "cloudwatch:Describe*", "cloudwatch:List*", "cloudwatch:Get*", "s3:Get*", "s3:List*", "sns:Get*", "sns:List*", "rds:Describe*", "cloudformation:Describe*", "cloudformation:Get*", "cloudformation:List*", "cloudformation:Validate*", "cloudformation:Estimate*" ], "Resource":"*" } ] }

La seconda policy specifica le operazioni Elastic Beanstalk che Jill può eseguire sulle risorse app1 e app2. L'istruzione AllReadCallsInApplications consente a Jill di chiamare le operazioni Describe* e le operazioni informative sull'ambiente. L'istruzione AllReadCallsOnApplications le consente di chiamare le operazioni DescribeApplications e DescribeEvents sulle risorse delle applicazioni app1 e app2. L'istruzione AllReadCallsOnSolutionStacks le consente di visualizzare operazioni che coinvolgono le risorse dello stack di soluzioni (ListAvailableSolutionStacks, DescribeConfigurationOptions e ValidateConfigurationSettings).

{ "Version": "2012-10-17", "Statement":[ { "Sid":"AllReadCallsInApplications", "Action":[ "elasticbeanstalk:Describe*", "elasticbeanstalk:RequestEnvironmentInfo", "elasticbeanstalk:RetrieveEnvironmentInfo" ], "Effect":"Allow", "Resource":[ "*" ], "Condition":{ "StringEquals":{ "elasticbeanstalk:InApplication":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1", "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2" ] } } }, { "Sid":"AllReadCallsOnApplications", "Action":[ "elasticbeanstalk:DescribeApplications", "elasticbeanstalk:DescribeEvents" ], "Effect":"Allow", "Resource":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1", "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2" ] }, { "Sid":"AllReadCallsOnSolutionStacks", "Action":[ "elasticbeanstalk:ListAvailableSolutionStacks", "elasticbeanstalk:DescribeConfigurationOptions", "elasticbeanstalk:ValidateConfigurationSettings" ], "Effect":"Allow", "Resource":[ "arn:aws:elasticbeanstalk:us-east-2::solutionstack/*" ] } ] }

La terza policy specifica le operazioni Elastic Beanstalk per cui la seconda policy richiede le autorizzazioni per essere completate. L'istruzione AllNonResourceCalls le consente l'operazione elasticbeanstalk:CheckDNSAvailability, che è necessaria per alcune azioni di visualizzazione.

{ "Version": "2012-10-17", "Statement":[ { "Sid":"AllNonResourceCalls", "Action":[ "elasticbeanstalk:CheckDNSAvailability" ], "Effect":"Allow", "Resource":[ "*" ] } ] }

Esempio 3: Jack - sviluppatore per app1

Abbiamo suddiviso la policy di Jack in tre policy separate, in modo che siano più facili da leggere e gestire. Insieme, danno a Jack le autorizzazioni necessarie per eseguire operazioni di testing, monitoraggio e distribuzione sulla risorsa app1.

La prima policy specifica le operazioni per Auto Scaling, Amazon S3, Amazon EC2, CloudWatch, Amazon SNS, Elastic Load Balancing, Amazon RDS e AWS CloudFormation (per i tipi di container non legacy) in modo che le operazioni Elastic Beanstalk siano in grado di visualizzare e utilizzare le risorse sottostanti di app1. Per un elenco di tipi di container non legacy supportati, consulta . Perché alcune versioni di piattaforma sono contrassegnate come legacy?

Importante: questa policy è un esempio. Offre un'ampia gamma di autorizzazioni per i prodotti AWS che Elastic Beanstalk impiega per gestire applicazioni e ambienti. Ad esempio, ec2:* consente a un utente IAM di eseguire qualsiasi operazione su una risorsa Amazon EC2 nell'account AWS. Queste autorizzazioni non sono limitate alle risorse che utilizzi con Elastic Beanstalk. Come best practice, dovresti concedere agli individui solo le autorizzazioni necessarie per eseguire le proprie funzioni.

{ "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ec2:*", "elasticloadbalancing:*", "autoscaling:*", "cloudwatch:*", "s3:*", "sns:*", "rds:*", "cloudformation:*" ], "Resource":"*" } ] }

La seconda policy specifica le operazioni Elastic Beanstalk che Jack può eseguire sulla risorsa app1.

{ "Version": "2012-10-17", "Statement":[ { "Sid":"AllReadCallsAndAllVersionCallsInApplications", "Action":[ "elasticbeanstalk:Describe*", "elasticbeanstalk:RequestEnvironmentInfo", "elasticbeanstalk:RetrieveEnvironmentInfo", "elasticbeanstalk:CreateApplicationVersion", "elasticbeanstalk:DeleteApplicationVersion", "elasticbeanstalk:UpdateApplicationVersion" ], "Effect":"Allow", "Resource":[ "*" ], "Condition":{ "StringEquals":{ "elasticbeanstalk:InApplication":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1" ] } } }, { "Sid":"AllReadCallsOnApplications", "Action":[ "elasticbeanstalk:DescribeApplications", "elasticbeanstalk:DescribeEvents" ], "Effect":"Allow", "Resource":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1" ] }, { "Sid":"UpdateEnvironmentInApplications", "Action":[ "elasticbeanstalk:UpdateEnvironment" ], "Effect":"Allow", "Resource":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/app1/app1-staging*" ], "Condition":{ "StringEquals":{ "elasticbeanstalk:InApplication":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1" ] }, "StringLike":{ "elasticbeanstalk:FromApplicationVersion":[ "arn:aws:elasticbeanstalk:us-east-2:123456789012:applicationversion/app1/*" ] } } }, { "Sid":"AllReadCallsOnSolutionStacks", "Action":[ "elasticbeanstalk:ListAvailableSolutionStacks", "elasticbeanstalk:DescribeConfigurationOptions", "elasticbeanstalk:ValidateConfigurationSettings" ], "Effect":"Allow", "Resource":[ "arn:aws:elasticbeanstalk:us-east-2::solutionstack/*" ] } ] }

La terza policy specifica le operazioni Elastic Beanstalk per cui la seconda policy richiede le autorizzazioni per essere completate. L'istruzione AllNonResourceCalls consente l'operazione elasticbeanstalk:CheckDNSAvailability, necessaria per chiamare elasticbeanstalk:CreateEnvironment e altre operazioni. Consente anche l'operazione elasticbeanstalk:CreateStorageLocation, necessaria per elasticbeanstalk:CreateEnvironment e altre operazioni.

{ "Version": "2012-10-17", "Statement":[ { "Sid":"AllNonResourceCalls", "Action":[ "elasticbeanstalk:CheckDNSAvailability", "elasticbeanstalk:CreateStorageLocation" ], "Effect":"Allow", "Resource":[ "*" ] } ] }