Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Assumez un IAM rôle
Utilisation de IAM rôles pour les informations d'identification variables d'EC2instance Amazon
Si vous exécutez votre application sur une EC2 instance Amazon, la méthode préférée pour fournir des informations d'identification pour les appels AWS consiste à utiliser un IAMrôle pour obtenir des informations de sécurité temporaires.
Lorsque vous utilisez IAM des rôles, vous n'avez pas à vous soucier de la gestion des informations d'identification depuis votre application. Ils permettent à une instance d' « assumer » un rôle en récupérant des informations d'identification temporaires auprès du serveur de métadonnées de l'EC2instance Amazon.
Les informations d'identification temporaires, souvent appelées informations d'identification du profil d'instance, permettent d'accéder aux actions et aux ressources autorisées par la politique du rôle. Amazon se EC2 charge de l'authentification sécurisée des instances auprès du IAM service pour qu'elles assument le rôle et de l'actualisation périodique des informations d'identification de rôle récupérées. Ceci permet de sécuriser l'application presque sans effort de votre part. Pour obtenir la liste des services qui acceptent les informations d'identification de sécurité temporaires, consultez la section AWS Services compatibles IAM dans le Guide de IAM l'utilisateur.
Note
Pour éviter d'accéder au service de métadonnées chaque fois, vous pouvez transmettre une instance Aws\CacheInterface
en tant qu'option 'credentials'
à un constructeur client. Cela permet d'SDKutiliser les informations d'identification du profil d'instance mises en cache à la place. Pour plus de détails, voir Configuration pour la AWS SDK for PHP
version 3.
Pour plus d'informations sur le développement d'EC2applications Amazon à l'aide deSDKs, consultez la section Utilisation IAM des rôles pour EC2 les instances Amazon dans le guide de référence AWS SDKs and Tools.
Création et attribution d'un IAM rôle à une EC2 instance Amazon
-
Créez un client IAM.
Importations
require 'vendor/autoload.php'; use Aws\Iam\IamClient;
Exemple de code
$client = new IamClient([ 'region' => 'us-west-2', 'version' => '2010-05-08' ]);
-
Créez un IAM rôle avec les autorisations nécessaires pour les actions et les ressources que vous utiliserez.
Exemple de code
$result = $client->createRole([ 'AssumeRolePolicyDocument' => 'IAM JSON Policy', // REQUIRED 'Description' => 'Description of Role', 'RoleName' => 'RoleName', // REQUIRED ]);
-
Créez un profil d'IAMinstance et stockez le nom de ressource Amazon (ARN) à partir du résultat.
Note
Si vous utilisez la IAM console au lieu de AWS SDK for PHP, la console crée automatiquement un profil d'instance et lui donne le même nom que le rôle auquel il correspond.
Exemple de code
$IPN = 'InstanceProfileName'; $result = $client->createInstanceProfile([ 'InstanceProfileName' => $IPN , ]); $ARN = $result['Arn']; $InstanceID = $result['InstanceProfileId'];
-
Créez un EC2 client Amazon.
Importations
require 'vendor/autoload.php'; use Aws\Ec2\Ec2Client;
Exemple de code
$ec2Client = new Ec2Client([ 'region' => 'us-west-2', 'version' => '2016-11-15', ]);
-
Ajoutez le profil d'instance à une EC2 instance Amazon en cours d'exécution ou arrêtée. Utilisez le nom du profil d'instance de votre IAM rôle.
Exemple de code
$result = $ec2Client->associateIamInstanceProfile([ 'IamInstanceProfile' => [ 'Arn' => $ARN, 'Name' => $IPN, ], 'InstanceId' => $InstanceID ]);
Pour plus d'informations, consultez la section IAMRôles pour Amazon EC2 dans le guide de EC2 l'utilisateur Amazon.
Utilisation de IAM rôles pour les ECS tâches Amazon
Une tâche dans Amazon Elastic Container Service (AmazonECS) peut jouer IAM le rôle de passer des AWS API appels. Il s'agit d'une stratégie de gestion des informations d'identification à utiliser par vos applications, similaire à la manière dont les profils d'EC2instance Amazon fournissent des informations d'identification aux EC2 instances Amazon.
Au lieu de créer et de distribuer des AWS informations d'identification à long terme aux conteneurs ou d'utiliser le rôle de l'EC2instance Amazon, vous pouvez associer un IAM rôle utilisant des informations d'identification temporaires à une définition ou à une RunTask
APIopération de ECS tâche.
Pour plus d'informations sur l'utilisation IAM des rôles que les tâches de conteneur peuvent assumer, consultez la rubrique relative aux IAMrôles des tâches dans le manuel Amazon ECS Developer Guide. Pour des exemples d'utilisation du IAM rôle de tâche sous la forme d'un rôle taskRoleArn
dans les définitions de tâches, consultez également les exemples de définitions de tâches dans le manuel Amazon ECS Developer Guide.
Assumer un IAM rôle dans un autre Compte AWS
Lorsque vous travaillez dans un Compte AWS (compte A) et que vous souhaitez assumer un rôle dans un autre compte (compte B), vous devez d'abord créer un IAM rôle dans le compte B. Ce rôle permet aux entités de votre compte (compte A) d'effectuer des actions spécifiques dans le compte B. Pour plus d'informations sur l'accès entre comptes, voir Tutoriel : déléguer l'accès entre AWS comptes à l'aide de IAM rôles.
Après avoir créé un rôle dans le compte B, enregistrez-leARN. Vous l'utiliserez ARN lorsque vous assumerez le rôle depuis le compte A. Vous assumez le rôle en utilisant les AWS informations d'identification associées à votre entité dans le compte A.
Créez un AWS STS client avec des informations d'identification pour votre Compte AWS. Dans ce qui suit, nous avons utilisé un profil d'informations d'identification, mais vous pouvez utiliser n'importe quelle méthode. Avec le AWS STS client nouvellement créé, appelez assume-role et fournissez une personnalisation. sessionName Récupérez les nouvelles informations d'identification temporaires à partir du résultat. Les informations d'identification durent une heure par défaut.
Exemple de code
$stsClient = new Aws\Sts\StsClient([ 'profile' => 'default', 'region' => 'us-east-2', 'version' => '2011-06-15' ]); $ARN = "arn:aws:iam::123456789012:role/xaccounts3access"; $sessionName = "s3-access-example"; $result = $stsClient->AssumeRole([ 'RoleArn' => $ARN, 'RoleSessionName' => $sessionName, ]); $s3Client = new S3Client([ 'version' => '2006-03-01', 'region' => 'us-west-2', 'credentials' => [ 'key' => $result['Credentials']['AccessKeyId'], 'secret' => $result['Credentials']['SecretAccessKey'], 'token' => $result['Credentials']['SessionToken'] ] ]);
Pour plus d'informations, consultez la section Utilisation IAM des rôles ou AssumeRoledans la AWS SDK for PHP API référence.
Utilisation d'un IAM rôle associé à une identité Web
La Fédération des identités Web permet aux clients d'utiliser des fournisseurs d'identité tiers pour s'authentifier lorsqu'ils accèdent aux AWS ressources. Avant de pouvoir assumer un rôle avec l'identité Web, vous devez créer un IAM rôle et configurer un fournisseur d'identité Web (IdP). Pour de plus amples informations, veuillez consulter Création d'un rôle pour la fédération d'identité web ou OpenID Connect Federation (Console).
Après avoir créé un fournisseur d'identité et créé un rôle pour votre identité Web, utilisez un AWS STS client pour authentifier un utilisateur. Indiquez le webIdentityToken et ProviderId pour votre identité, et le rôle ARN pour le IAM rôle avec des autorisations pour l'utilisateur.
Exemple de code
$stsClient = new Aws\Sts\StsClient([ 'profile' => 'default', 'region' => 'us-east-2', 'version' => '2011-06-15' ]); $ARN = "arn:aws:iam::123456789012:role/xaccounts3access"; $sessionName = "s3-access-example"; $duration = 3600; $result = $stsClient->AssumeRoleWithWebIdentity([ 'WebIdentityToken' => "FACEBOOK_ACCESS_TOKEN", 'ProviderId' => "graph.facebook.com", 'RoleArn' => $ARN, 'RoleSessionName' => $sessionName, ]); $s3Client = new S3Client([ 'version' => '2006-03-01', 'region' => 'us-west-2', 'credentials' => [ 'key' => $result['Credentials']['AccessKeyId'], 'secret' => $result['Credentials']['SecretAccessKey'], 'token' => $result['Credentials']['SessionToken'] ] ]);
Pour plus d'informations, voir AssumeRoleWithWebIdentity—Fédération via un fournisseur d'identité basé sur le Web ou AssumeRoleWithWebIdentitydans le manuel de AWS SDK for PHP API référence.
Assumer un rôle avec un profil
Définissez les profils dans ~/.aws/credentials
Vous pouvez configurer le AWS SDK for PHP pour utiliser un IAM rôle en définissant un profil dans~/.aws/credentials
.
Créez un nouveau profil avec le role_arn
paramètre correspondant au rôle que vous souhaitez assumer. Incluez également le source_profile
paramètre d'un autre profil avec des informations d'identification autorisées à assumer le IAM rôle. Pour plus de détails sur ces paramètres de configuration, consultez la section Assumer les informations d'identification du rôle dans le guide de référence AWS SDKs et Tools.
Par exemple, dans ce qui suit~/.aws/credentials
, le project1
profil définit role_arn
et spécifie le default
profil comme source des informations d'identification afin de vérifier que l'entité qui leur est associée peut assumer le rôle.
[project1] role_arn = arn:aws:iam::123456789012:role/testing source_profile = default role_session_name = OPTIONAL_SESSION_NAME [default] aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY aws_session_token= YOUR_AWS_SESSION_TOKEN
Si vous définissez la variable d'AWS_PROFILE
environnement ou si vous utilisez un profile
paramètre lorsque vous instanciez un client de service, le rôle spécifié dans project1
est assumé, en utilisant le default
profil comme informations d'identification source.
L'extrait suivant montre l'utilisation du profile
paramètre dans un S3Client
constructeur. Ils S3Client
auront les autorisations associées au rôle associé au project1
profil.
$s3 = new Aws\S3\S3Client([ 'region' => 'us-east-1', 'version' => '2006-03-01', 'profile' => 'project1' ]);
Définissez les profils dans ~/.aws/config
Le ~/.aws/config
fichier peut également contenir les profils que vous souhaitez faire passer pour acquis. Si vous définissez la variable d'environnementAWS_SDK_LOAD_NONDEFAULT_CONFIG
, le SDK for PHP charge les profils à partir du config
fichier. Lorsqu'il AWS_SDK_LOAD_NONDEFAULT_CONFIG
est défini, les profils de SDK charge proviennent à la fois de ~/.aws/config
et~/.aws/credentials
. Les profils de ~/.aws/credentials
sont chargés en dernier et ont priorité sur un profil du ~/.aws/config
même nom. Les profils définis dans ces emplacements peuvent être utilisés en tant que source_profile
ou que profil à assumer.
L'exemple suivant utilise le project1
profil défini dans le config
fichier et le default
profil dans le credentials
fichier. Le AWS_SDK_LOAD_NONDEFAULT_CONFIG
est également défini.
# Profile in ~/.aws/config. [profile project1] role_arn = arn:aws:iam::123456789012:role/testing source_profile = default role_session_name = OPTIONAL_SESSION_NAME
# Profile in ~/.aws/credentials. [default] aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY aws_session_token= YOUR_AWS_SESSION_TOKEN
Lorsque le S3Client
constructeur exécute l'extrait de code suivant, le rôle défini dans le project1
profil sera assumé à l'aide des informations d'identification associées au profil. default
$s3 = new Aws\S3\S3Client([ 'region' => 'us-east-1', 'version' => '2006-03-01', 'profile' => 'project1' ]);