Verwenden der IAM-Authentifizierung und -Autorisierung für Amazon MQ für RabbitMQ - Amazon MQ

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden der IAM-Authentifizierung und -Autorisierung für Amazon MQ für RabbitMQ

Das folgende Verfahren zeigt, wie Sie die AWS IAM-Authentifizierung und -Autorisierung für einen Amazon MQ for RabbitMQ-Broker aktivieren. Nach der Aktivierung von IAM können sich Benutzer mithilfe von AWS IAM-Anmeldeinformationen authentifizieren, um auf die RabbitMQ Management API zuzugreifen und sich über AMQP zu verbinden. Einzelheiten zur Funktionsweise der IAM-Authentifizierung mit Amazon MQ für RabbitMQ finden Sie unter. IAM-Authentifizierung und Autorisierung für Amazon MQ for RabbitMQ

Voraussetzungen

  • AWS Administratoranmeldedaten für das AWS Konto, dem der Amazon MQ for RabbitMQ-Broker gehört

  • Eine mit diesen Administratoranmeldedaten konfigurierte Shell-Umgebung (mithilfe von AWS CLI-Profilen oder Umgebungsvariablen)

  • AWS CLI installiert und konfiguriert

  • jqBefehlszeilen-JSON-Prozessor installiert

  • curlBefehlszeilentool installiert

Konfiguration der IAM-Authentifizierung und -Autorisierung mit AWS CLI

  1. Legen Sie Umgebungsvariablen fest

    Stellen Sie die erforderlichen Umgebungsvariablen für Ihren Broker ein:

    export AWS_DEFAULT_REGION=<region> export BROKER_ID=<broker-id>
  2. Aktivieren Sie ausgehende JWT-Token

    Aktivieren Sie den ausgehenden Web-Identitätsverbund für Ihr Konto: AWS

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

    In der Ausgabe wird eine eindeutige URL zur Aussteller-ID für Ihr Konto im folgenden Format angezeigt. https://<id>.tokens.sts.global.api.aws

  3. Erstellen Sie das IAM-Richtliniendokument

    Erstellen Sie ein Richtliniendokument, das Berechtigungen zum Abrufen von Web-Identitätstoken gewährt:

    cat > policy.json << 'EOF' { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "sts:GetWebIdentityToken", "sts:TagGetWebIdentityToken" ], "Resource": "*" } ] } EOF
  4. Erstellen Sie die Vertrauensrichtlinie

    Rufen Sie Ihre Anruferidentität ab und erstellen Sie ein Dokument zur Vertrauensrichtlinie:

    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. Erstellen Sie die IAM-Rolle

    Erstellen Sie die IAM-Rolle und fügen Sie die Richtlinie hinzu:

    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. Konfigurieren Sie die OAuth2 RabbitMQ-Einstellungen

    Erstellen Sie eine RabbitMQ-Konfigurationsdatei mit Authentifizierungs- und Autorisierungseinstellungen: OAuth2

    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. Aktualisieren Sie die Broker-Konfiguration

    Wenden Sie die neue Konfiguration auf Ihren Broker an:

    # 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

    Warten Sie, bis der Broker-Status wieder erreicht ist, RUNNING bevor Sie mit dem nächsten Schritt fortfahren.

  8. Besorgen Sie sich ein JWT-Token

    Nehmen Sie die IAM-Rolle an und holen Sie sich ein Web-Identitätstoken:

    # 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. Greifen Sie auf die RabbitMQ Management API zu

    Verwenden Sie das JWT-Token, um auf die RabbitMQ Management API zuzugreifen:

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

    Eine erfolgreiche Antwort bestätigt, dass die IAM-Authentifizierung korrekt funktioniert. Die Antwort enthält Informationen zur Brokerübersicht im JSON-Format.

  10. Stellen Sie mithilfe des JWT-Tokens eine Connect über AMQP her

    Testen Sie die AMQP-Konnektivität mithilfe des JWT-Tokens mit dem Perf-Test-Tool:

    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

    Wenn Sie eine ACCESS_REFUSED Fehlermeldung erhalten, können Sie mithilfe der Protokolle für Ihren Broker Fehler in Ihren Konfigurationseinstellungen beheben. CloudWatch Sie finden den Link für die Protokollgruppe CloudWatch Logs für Ihren Broker in der Amazon MQ MQ-Konsole.