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
-
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> -
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_IDENTIFIERL'output mostra un URL identificativo dell'emittente univoco per il tuo account nel formato.
https://<id>.tokens.sts.global.api.aws -
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 -
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 -
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 -
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 -
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_IDAttendi il ripristino dello stato di broker
RUNNINGprima di procedere alla fase successiva. -
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') -
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.
-
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 1Se ricevi un
ACCESS_REFUSEDerrore, 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.