View a markdown version of this page

Configurazione del ruolo IAM - Amazon EMR

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

Configurazione del ruolo IAM

Prerequisiti

Prima di iniziare, assicurati di disporre dei seguenti elementi:

  • Un AWS account con accesso amministrativo IAM

  • AWS CLI installata e configurata. Per ulteriori informazioni, consulta Installazione della AWS CLI.

  • Un bucket Amazon Amazon S3 per lo staging di artefatti aggiornati

Imposta le seguenti variabili da utilizzare nei comandi successivi (my-staging-bucketsostituiscile con il nome del bucket):

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

Fase 1: creazione di un ruolo IAM per

Il server SMUS MCP utilizza il tuo ruolo IAM per autorizzare le operazioni a livello di servizio. AWS Non sono richieste MCP-specific autorizzazioni separate.

Per creare il ruolo IAM (AWS CLI)

  1. Crea un documento sulla politica di fiducia:

    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. Crea il ruolo:

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

Passaggio 2: allega le autorizzazioni per la modalità di distribuzione

Allega la politica di autorizzazioni che corrisponde alla tua piattaforma di distribuzione EMR.

Opzione A: EMR su EC2

  1. Crea il documento relativo alla policy (sostituiscilo <STAGING_BUCKET> con il nome del tuo bucket Amazon S3):

    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. Allega la policy:

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

In alternativa, AmazonElasticMapReduceFullAccessallega la policy gestita più una policy Amazon S3 per il tuo staging bucket.

Autorizzazioni KMS - Staging Bucket

Se lo staging bucket è crittografato con un CMK, aggiungi la seguente politica. Il servizio utilizzerà automaticamente la CMK configurata nel bucket durante il caricamento dei dati (sostituiscila <KEY_ID> con l'ID della chiave KMS):

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>\" }] }"

Opzione B: EMR Serverless

  1. Crea il documento relativo alla policy (sostituiscilo <STAGING_BUCKET> con il nome del tuo bucket Amazon S3):

    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. Allega la policy:

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

Autorizzazioni KMS - Staging Bucket

Se lo staging bucket è crittografato con un CMK, aggiungi la seguente politica. Il servizio utilizzerà automaticamente la CMK configurata nel bucket durante il caricamento dei dati (sostituiscila <KEY_ID> con l'ID della chiave KMS):

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>\" }] }"

Autorizzazioni KMS - Registri CloudWatch

Se CloudWatch i log sono crittografati con un CMK, aggiungi la seguente policy in modo che il servizio possa leggere i log delle applicazioni EMR Serverless (sostituiscili <KEY_ID> con l'ID della tua chiave KMS):

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>\" }] }"

Fase 3: Configurare il client MCP

Configura il tuo client MCP (ad esempio, Claude Desktop o Amazon Q Developer) per utilizzare il ruolo ARN che hai creato:

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

Consulta la documentazione del tuo client MCP per informazioni su come configurare AWS le credenziali (in genere tramite un AWS profilo che assume questo ruolo).

Chiavi di condizione per le richieste del server MCP

Due chiavi di condizione vengono aggiunte automaticamente a tutte le richieste effettuate tramite il server SMUS MCP:

  • aws:ViaAWSMCPService— Impostato su true per qualsiasi richiesta effettuata tramite un server AWS MCP gestito.

  • aws:CalledViaAWSMCP— Impostato sul principale del servizio del server MCP (ad esempio,sagemaker-unified-studio-mcp.amazonaws.com).

È possibile utilizzare questi tasti di condizione per controllare l'accesso alle risorse quando le richieste provengono da un server MCP AWS gestito.

Esempio: consentire le operazioni EMR solo in caso di accesso tramite il server MCP SMUS:

{ "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" } } } ] }

Esempio: nega tutte le operazioni tramite qualsiasi AWS server MCP gestito:

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

Esempio: nega operazioni specifiche tramite uno specifico server MCP AWS gestito:

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

Per ulteriori informazioni sulle chiavi di condizione, consulta le chiavi di contesto delle condizioni AWS globali nella Guida per l'utente IAM.