Utilizzo dell'autenticazione e dell'autorizzazione IAM per Amazon MQ for RabbitMQ - Amazon MQ

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à.

Utilizzo dell'autenticazione e dell'autorizzazione IAM per Amazon MQ for RabbitMQ

La procedura seguente mostra come abilitare l'autenticazione e l'autorizzazione AWS IAM per un broker Amazon MQ for RabbitMQ. Dopo aver abilitato IAM, gli utenti possono autenticarsi utilizzando le credenziali AWS IAM per accedere all'API di gestione RabbitMQ e connettersi tramite AMQP. Per i dettagli su come funziona l'autenticazione IAM con Amazon MQ for RabbitMQ, consulta. Autenticazione e autorizzazione IAM per Amazon MQ for RabbitMQ

Prerequisiti

  • AWS credenziali di amministratore per l' AWS account proprietario del broker Amazon MQ for RabbitMQ

  • Un ambiente shell configurato con queste credenziali di amministratore (utilizzando profili AWS CLI o variabili di ambiente)

  • AWS CLI installata e configurata

  • jqprocessore JSON da riga di comando installato

  • curlstrumento da riga di comando installato

Configurazione dell'autenticazione e dell'autorizzazione IAM tramite AWS CLI

  1. Imposta le variabili di ambiente

    Imposta le variabili di ambiente richieste per il tuo broker:

    export AWS_DEFAULT_REGION=<region> export BROKER_ID=<broker-id>
  2. Abilita i token JWT in uscita

    Abilita la federazione delle identità web in uscita per il tuo account: AWS

    ISSUER_IDENTIFIER=$(aws iam enable-outbound-web-identity-federation --query 'IssuerIdentifier' --output text) echo $ISSUER_IDENTIFIER

    L'output mostra un URL identificativo dell'emittente univoco per il tuo account nel formato. https://<id>.tokens.sts.global.api.aws

  3. Crea il documento relativo alla policy IAM

    Crea un documento di policy che conceda le autorizzazioni per ottenere token di identità web:

    cat > policy.json << 'EOF' { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "sts:GetWebIdentityToken", "sts:TagGetWebIdentityToken" ], "Resource": "*" } ] } EOF
  4. Crea la politica di fiducia

    Recupera l'identità del chiamante e crea un documento sulla politica di fiducia:

    CALLER_ARN=$(aws sts get-caller-identity --query Arn --output text) cat > trust-policy.json << EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "$CALLER_ARN" }, "Action": "sts:AssumeRole" } ] } EOF
  5. Crea il ruolo IAM

    Crea il ruolo IAM e allega la policy:

    aws iam create-role --role-name RabbitMqAdminRole --assume-role-policy-document file://trust-policy.json aws iam put-role-policy --role-name RabbitMqAdminRole --policy-name RabbitMqAdminRolePolicy --policy-document file://policy.json
  6. Configura le impostazioni di OAuth2 RabbitMQ

    Crea un file di configurazione RabbitMQ con le impostazioni di OAuth2 autenticazione e autorizzazione:

    cat > rabbitmq.conf << EOF auth_backends.1 = oauth2 auth_backends.2 = internal auth_oauth2.jwks_url = ${ISSUER_IDENTIFIER}/.well-known/jwks.json auth_oauth2.resource_server_id = rabbitmq auth_oauth2.scope_prefix = rabbitmq/ auth_oauth2.additional_scopes_key = sub auth_oauth2.scope_aliases.1.alias = arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):role/RabbitMqAdminRole auth_oauth2.scope_aliases.1.scope = rabbitmq/tag:administrator rabbitmq/read:*/* rabbitmq/write:*/* rabbitmq/configure:*/* auth_oauth2.https.hostname_verification = wildcard management.oauth_enabled = true EOF
  7. Aggiorna la configurazione del broker

    Applica la nuova configurazione al tuo broker:

    # Retrieve the configuration ID CONFIG_ID=$(aws mq describe-broker --broker-id $BROKER_ID --query 'Configurations[0].Id' --output text) # Create a new configuration revision REVISION=$(aws mq update-configuration --configuration-id $CONFIG_ID --data "$(cat rabbitmq.conf | base64 --wrap=0)" --query 'LatestRevision.Revision' --output text) # Apply the configuration to the broker aws mq update-broker --broker-id $BROKER_ID --configuration Id=$CONFIG_ID,Revision=$REVISION # Reboot the broker to apply changes aws mq reboot-broker --broker-id $BROKER_ID

    Attendi il ripristino dello stato di broker RUNNING prima di procedere alla fase successiva.

  8. Ottieni un token JWT

    Assumi il ruolo IAM e ottieni un token di identità web:

    # Assume the RabbitMqAdminRole ROLE_CREDS=$(aws sts assume-role --role-arn arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):role/RabbitMqAdminRole --role-session-name rabbitmq-session) # Configure the session with temporary credentials export AWS_ACCESS_KEY_ID=$(echo "$ROLE_CREDS" | jq -r '.Credentials.AccessKeyId') export AWS_SECRET_ACCESS_KEY=$(echo "$ROLE_CREDS" | jq -r '.Credentials.SecretAccessKey') export AWS_SESSION_TOKEN=$(echo "$ROLE_CREDS" | jq -r '.Credentials.SessionToken') # Obtain the web identity token TOKEN_RESPONSE=$(aws sts get-web-identity-token \ --audience "rabbitmq" \ --signing-algorithm ES384 \ --duration-seconds 300 \ --tags Key=scope,Value="rabbitmq/tag:administrator") # Extract the token TOKEN=$(echo "$TOKEN_RESPONSE" | jq -r '.WebIdentityToken')
  9. Accedi all'API di gestione RabbitMQ

    Usa il token JWT per accedere all'API di gestione RabbitMQ:

    BROKER_URL=<broker-id>.mq.<region>.on.aws curl -u ":$TOKEN" \ -X GET https://${BROKER_URL}/api/overview \ -H "Content-Type: application/json"

    Una risposta riuscita conferma che l'autenticazione IAM funziona correttamente. La risposta contiene informazioni generali sul broker in formato JSON.

  10. Connect tramite AMQP utilizzando il token JWT

    Testa la connettività AMQP utilizzando il token JWT con lo strumento perf-test:

    BROKER_DNS=<broker-endpoint> CONNECTION_STRING=amqps://:${TOKEN}@${BROKER_DNS}:5671 docker run -it --rm --ulimit nofile=40960:40960 pivotalrabbitmq/perf-test:latest \ --queue-pattern 'test-queue-%d' --queue-pattern-from 1 --queue-pattern-to 1 \ --producers 1 --consumers 1 \ --uri ${CONNECTION_STRING} \ --flag persistent --rate 1

    Se ricevi un ACCESS_REFUSED errore, puoi risolvere i problemi delle impostazioni di configurazione utilizzando i log del tuo broker. CloudWatch Puoi trovare il link per il gruppo CloudWatch Logs log per il tuo broker nella console Amazon MQ.