View a markdown version of this page

Einrichtung der IAM-Rolle - Amazon EMR

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.

Einrichtung der IAM-Rolle

Voraussetzungen

Stellen Sie vor Beginn sicher, dass Sie über Folgendes verfügen:

  • Ein AWS Konto mit IAM-Administratorzugriff

  • AWS CLI installiert und konfiguriert. Weitere Informationen finden Sie unter Installation der AWS CLI.

  • Ein Amazon Amazon S3 S3-Bucket zum Staging aktualisierter Artefakte

Legen Sie die folgenden Variablen für die Verwendung in nachfolgenden Befehlen fest (my-staging-bucketersetzen Sie sie durch Ihren Bucket-Namen):

ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) REGION=$(aws configure get region) STAGING_BUCKET=my-staging-bucket

Schritt 1: Erstellen Sie die IAM-Rolle für das

Der SMU-MCP-Server verwendet Ihre IAM-Rolle, um Operationen auf Serviceebene zu autorisieren. AWS Es sind keine separaten MCP-specific Berechtigungen erforderlich.

So erstellen Sie die IAM-Rolle (AWS CLI)

  1. Erstellen Sie ein Dokument mit einer Vertrauensrichtlinie:

    cat > mcp-trust-policy.json << EOF { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccountToAssumeRole", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::${ACCOUNT_ID}:root" }, "Action": "sts:AssumeRole" } ] } EOF
  2. Erstellen Sie die Rolle:

    aws iam create-role \ --role-name SparkUpgradeMCPRole \ --assume-role-policy-document file://mcp-trust-policy.json

Schritt 2: Hängen Sie die Berechtigungen für Ihren Bereitstellungsmodus an

Fügen Sie die Berechtigungsrichtlinie bei, die zu Ihrer EMR-Bereitstellungsplattform passt.

Option A: EMR auf EC2

  1. Erstellen Sie das Richtliniendokument (<STAGING_BUCKET>ersetzen Sie es durch Ihren Amazon S3 S3-Bucket-Namen):

    cat > emr-ec2-upgrade-policy.json << EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticmapreduce:DescribeCluster", "elasticmapreduce:DescribeStep", "elasticmapreduce:ListSteps", "elasticmapreduce:ListClusters", "elasticmapreduce:DescribeJobFlows", "elasticmapreduce:AddJobFlowSteps", "elasticmapreduce:CreatePersistentAppUI", "elasticmapreduce:DescribePersistentAppUI", "elasticmapreduce:GetPersistentAppUIPresignedURL" ], "Resource": "*" }, { "Effect": "Allow", "Action": ["s3:GetBucket*", "s3:GetObject*", "s3:List*", "s3:Put*"], "Resource": [ "arn:aws:s3:::${STAGING_BUCKET}", "arn:aws:s3:::${STAGING_BUCKET}/*" ] } ] } EOF
  2. Hängen Sie die Richtlinie an:

    aws iam put-role-policy \ --role-name SparkUpgradeMCPRole \ --policy-name EMREC2UpgradeAccess \ --policy-document file://emr-ec2-upgrade-policy.json

Sie können auch die AmazonElasticMapReduceFullAccessverwaltete Richtlinie sowie eine Amazon S3 S3-Richtlinie für Ihren Staging-Bucket anhängen.

KMS-Berechtigungen — Staging Bucket

Wenn der Staging-Bucket mit einem CMK verschlüsselt ist, fügen Sie die folgende Richtlinie hinzu. Der Dienst verwendet beim Hochladen von Daten automatisch das im Bucket konfigurierte CMK (<KEY_ID>ersetzen Sie es durch Ihre KMS-Schlüssel-ID):

aws iam put-role-policy \ --role-name SparkUpgradeMCPRole \ --policy-name KMSStagingBucketEncrypt \ --policy-document "{ \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Action\": [\"kms:GenerateDataKey\", \"kms:Encrypt\"], \"Resource\": \"arn:aws:kms:${REGION}:${ACCOUNT_ID}:key/<KEY_ID>\" }] }"

Option B: EMR Serverlos

  1. Erstellen Sie das Richtliniendokument (<STAGING_BUCKET>ersetzen Sie es durch Ihren Amazon S3 S3-Bucket-Namen):

    cat > emr-serverless-upgrade-policy.json << EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-serverless:StartJobRun", "emr-serverless:GetJobRun", "emr-serverless:GetApplication", "emr-serverless:ListApplications", "emr-serverless:GetDashboardForJobRun" ], "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringLike": { "iam:PassedToService": "emr-serverless.amazonaws.com" } } }, { "Effect": "Allow", "Action": ["logs:GetLogEvents", "logs:DescribeLogStreams"], "Resource": "arn:aws:logs:*:*:log-group:*" }, { "Effect": "Allow", "Action": ["s3:GetBucket*", "s3:GetObject*", "s3:List*", "s3:Put*"], "Resource": [ "arn:aws:s3:::${STAGING_BUCKET}", "arn:aws:s3:::${STAGING_BUCKET}/*" ] } ] } EOF
  2. Hängen Sie die Richtlinie an:

    aws iam put-role-policy \ --role-name SparkUpgradeMCPRole \ --policy-name EMRServerlessUpgradeAccess \ --policy-document file://emr-serverless-upgrade-policy.json

KMS-Berechtigungen — Staging Bucket

Wenn der Staging-Bucket mit einem CMK verschlüsselt ist, fügen Sie die folgende Richtlinie hinzu. Der Dienst verwendet beim Hochladen von Daten automatisch das im Bucket konfigurierte CMK (<KEY_ID>ersetzen Sie es durch Ihre KMS-Schlüssel-ID):

aws iam put-role-policy \ --role-name SparkUpgradeMCPRole \ --policy-name KMSStagingBucketEncrypt \ --policy-document "{ \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Action\": [\"kms:GenerateDataKey\", \"kms:Encrypt\"], \"Resource\": \"arn:aws:kms:${REGION}:${ACCOUNT_ID}:key/<KEY_ID>\" }] }"

KMS-Berechtigungen — Protokolle CloudWatch

Wenn die CloudWatch Protokolle mit einem CMK verschlüsselt sind, fügen Sie die folgende Richtlinie hinzu, damit der Dienst die EMR Serverless-Anwendungsprotokolle lesen kann (<KEY_ID>ersetzen Sie sie durch Ihre KMS-Schlüssel-ID):

aws iam put-role-policy \ --role-name SparkUpgradeMCPRole \ --policy-name KMSCloudWatchLogsDecrypt \ --policy-document "{ \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Action\": [\"kms:Decrypt\", \"kms:DescribeKey\"], \"Resource\": \"arn:aws:kms:${REGION}:${ACCOUNT_ID}:key/<KEY_ID>\" }] }"

Schritt 3: Konfigurieren Sie Ihren MCP-Client

Konfigurieren Sie Ihren MCP-Client (z. B. Claude Desktop oder Amazon Q Developer) so, dass er den von Ihnen erstellten Rollen-ARN verwendet:

echo "arn:aws:iam::${ACCOUNT_ID}:role/SparkUpgradeMCPRole"

Informationen zur Konfiguration von AWS Anmeldeinformationen finden Sie in der Dokumentation Ihres MCP-Clients (in der Regel über ein AWS Profil, das diese Rolle übernimmt).

Bedingungsschlüssel für MCP-Serveranfragen

Zwei Bedingungsschlüssel werden automatisch zu allen Anfragen hinzugefügt, die über den SMU-MCP-Server gestellt werden:

  • aws:ViaAWSMCPService— Wird true für jede Anfrage, die über einen AWS verwalteten MCP-Server gestellt wird, auf gesetzt.

  • aws:CalledViaAWSMCP— Auf den MCP-Serverdienstprinzipal eingestellt (z. B.sagemaker-unified-studio-mcp.amazonaws.com).

Sie können diese Bedingungsschlüssel verwenden, um den Zugriff auf Ihre Ressourcen zu steuern, wenn Anfragen von einem AWS verwalteten MCP-Server stammen.

Beispiel: EMR-Operationen nur zulassen, wenn der Zugriff über den SMU-MCP-Server erfolgt:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowEMRReadViaSMUSMCP", "Effect": "Allow", "Action": [ "elasticmapreduce:DescribeCluster", "elasticmapreduce:ListClusters", "elasticmapreduce:ListSteps", "emr-serverless:GetJobRun", "emr-serverless:GetApplication" ], "Resource": "*", "Condition": { "StringEquals": { "aws:CalledViaAWSMCP": "sagemaker-unified-studio-mcp.amazonaws.com" } } } ] }

Beispiel: Alle Operationen über einen beliebigen AWS verwalteten MCP-Server verweigern:

{ "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "Bool": { "aws:ViaAWSMCPService": "true" } } }

Beispiel: Verweigern Sie bestimmte Operationen über einen bestimmten AWS verwalteten MCP-Server:

{ "Effect": "Deny", "Action": ["glue:GetJobRun", "glue:StartJobRun"], "Resource": "*", "Condition": { "StringEquals": { "aws:CalledViaAWSMCP": "sagemaker-unified-studio-mcp.amazonaws.com" } } }

Weitere Informationen zu Bedingungsschlüsseln finden Sie unter AWS Globale Bedingungskontextschlüssel im IAM-Benutzerhandbuch.