Outils pour utilisateurs

Outils du site


cloud:aws:toc

Ceci est une ancienne révision du document !


AWS

AWS est le service cloud d'Amazon.

CLI

Pour configurer un compte avec un access key et secret:

$ aws configure

Variables d'environnement

$ export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
$ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
$ export AWS_DEFAULT_REGION=us-west-2

Dans le cas d'utilisation d'un session token, on peut ajouter:

AWS_SESSION_TOKEN

Utiliser un rôle qui requiert un MFA

Dans le fichier ~/.aws/credentials, ajouter par exemple les credentials nécessaires:

[aws_account_name_or_username]
aws_access_key_id = AKIAQ75CXLP2PEXAMPLE
aws_secret_access_key = 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                               

Après dans le fichier ~/.aws/config ajouter un profil:

[profile nom_du_profil]
output = json
region = us-east-1
role_arn = arn:aws:iam::976567865786:role/super_duper_power_users
source_profile = aws_account_name
mfa_serial=arn:aws:iam::987653456789:mfa/myusername

La valeur de source_profile fait référence au nom de la section dans le fichier credential, dans l'exemple plus haut c'est aws_account_name_or_username (qui est lui-même un exemple bidon).

Outils qui peuvent aider à gérer ça:

Exemple:

$  aws sts assume-role --role-arn arn:aws:iam::XXXXXXXXXXXX:role/org-super_users --role-session-name "RoleSessionName1" --profile org-super_users --output json > assume-role-output.txt

Source: Using an IAM role in the AWS CLI

Sortie au stdout

Les sorties de commandes peuvent se faire dans nano, ce qui n'est pas idéal pour copier les informations. L'option cli_pager= (avec aucune valeur) dans le ~/.aws/config [default] ne semble pas fonctionner, comme la documentation le suggère.

Plutôt faire avec un export:

$ export AWS_PAGER=

IAM

Créer un rôle IAM:

aws iam create-role --role-name SomeRoleName --assume-role-policy-document file://./subdir/some-file.json

Attach to policy:

aws iam attach-role-policy --role-name SomeRoleName --policy-arn arn:aws:iam::aws:policy/GameLiftGameServerGroupPolicy

Cognito

Login par requêtes directes

Les requêtes ci-dessous sont effectuées avec REST Client, extension de VS Code.

Prérequis:

  • L'application dans le User Pool n'a pas de Client Secret de configuré
  • L'utilisateur existe dans le user pool. Il peut y avoir un mot de passe initial avec le statut Force change password.

Pour effectuer des tests, par exemple pour obtenir un JWT d'identification, il faut appeler le service IDP de Cognito avec un initAuth:

POST https://cognito-idp.us-east-1.amazonaws.com/
Content-Type: application/x-amz-json-1.1
X-Amz-Target: AWSCognitoIdentityProviderService.InitiateAuth

{
    "AuthParameters" : {
        "USERNAME" : "test@domain",
        "PASSWORD" : "initialPassword"
    },
    "AuthFlow" : "USER_PASSWORD_AUTH",
    "ClientId" : "{{cognitoClientId}}"
}

Si la réponse retourne un challenge NEW_PASSWORD_REQUIRED, il faut envoyer une requête RespondToAuthChallenge:

POST https://cognito-idp.us-east-1.amazonaws.com/
Content-Type: application/x-amz-json-1.1
X-Amz-Target: AWSCognitoIdentityProviderService.RespondToAuthChallenge

{
    "ChallengeName": "NEW_PASSWORD_REQUIRED",
    "ChallengeResponses": {
      "USERNAME" : "test@domain",
      "NEW_PASSWORD" : "newPassword"
    },
    "ClientId": "{{cognitoClientId}}",
    "Session": "{{initAuth.response.body.Session}}"
}

La réponse au challenge retourne le id token si ça a bien fonctionné.

Obtenir un id token avec un refresh token:

POST https://cognito-idp.us-east-1.amazonaws.com/
Content-Type: application/x-amz-json-1.1
X-Amz-Target: AWSCognitoIdentityProviderService.InitiateAuth

{
    "AuthParameters" : {
        "REFRESH_TOKEN" : "{{normalAuth.response.body.AuthenticationResult.RefreshToken}}"
    },
    "AuthFlow" : "REFRESH_TOKEN_AUTH",
    "ClientId" : "{{cognitoClientId}}"
}

Ressources

cloud/aws/toc.1648574876.txt.gz · Dernière modification : 2022/03/29 19:27 de sgariepy