Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Configuración de roles de IAM
Requisitos previos
Antes de comenzar, asegúrese de que dispone de lo siguiente:
Una AWS cuenta con acceso administrativo de IAM
AWS CLI instalada y configurada. Para obtener más información, consulte Instalación de la AWS CLI.
Un bucket de Amazon S3 para organizar artefactos mejorados
Configure las siguientes variables para usarlas en los siguientes comandos (my-staging-bucketsustitúyalas por el nombre del bucket):
ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) REGION=$(aws configure get region) STAGING_BUCKET=my-staging-bucket
Paso 1: Crear el rol de IAM
El servidor MCP de SMUS utiliza su función de IAM para autorizar las operaciones a nivel de AWS servicio. No se requieren MCP-specific permisos independientes.
Para crear el rol de IAM (AWS CLI)
-
Cree un documento de política de confianza:
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 -
Cree el rol:
aws iam create-role \ --role-name SparkUpgradeMCPRole \ --assume-role-policy-document file://mcp-trust-policy.json
Paso 2: Adjunte los permisos para su modo de despliegue
Adjunte la política de permisos que coincida con su plataforma de implementación de EMR.
Opción A: EMR en EC2
-
Crea el documento de política (
<STAGING_BUCKET>sustitúyelo por el nombre de tu bucket de 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 -
Adjunta la política:
aws iam put-role-policy \ --role-name SparkUpgradeMCPRole \ --policy-name EMREC2UpgradeAccess \ --policy-document file://emr-ec2-upgrade-policy.json
También puede adjuntar la política AmazonElasticMapReduceFullAccessgestionada más una política de Amazon S3 a su depósito provisional.
Permisos de KMS: depósito provisional
Si el depósito provisional está cifrado con una CMK, añada la siguiente política. El servicio utilizará automáticamente la CMK configurada en el depósito al cargar los datos (<KEY_ID>sustitúyala por su ID de clave de 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>\" }] }"
Opción B: EMR sin servidor
-
Crea el documento de política (
<STAGING_BUCKET>sustitúyelo por el nombre de tu bucket de 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 -
Adjunta la política:
aws iam put-role-policy \ --role-name SparkUpgradeMCPRole \ --policy-name EMRServerlessUpgradeAccess \ --policy-document file://emr-serverless-upgrade-policy.json
Permisos de KMS: Staging Bucket
Si el depósito provisional está cifrado con una CMK, añada la siguiente política. El servicio utilizará automáticamente la CMK configurada en el depósito al cargar los datos (<KEY_ID>sustitúyala por su ID de clave de 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>\" }] }"
Permisos de KMS: registros CloudWatch
Si los CloudWatch registros están cifrados con una CMK, añada la siguiente política para que el servicio pueda leer los registros de las aplicaciones EMR Serverless (<KEY_ID>sustitúyalos por su ID de clave de 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>\" }] }"
Paso 3: Configure su cliente MCP
Configure su cliente MCP (por ejemplo, Claude Desktop o Amazon Q Developer) para que utilice el ARN de rol que creó:
echo "arn:aws:iam::${ACCOUNT_ID}:role/SparkUpgradeMCPRole"
Consulte la documentación de su cliente MCP para saber cómo configurar AWS las credenciales (normalmente mediante un AWS perfil que asume esta función).
Claves de condición para las solicitudes del servidor MCP
Se añaden automáticamente dos claves de condición a todas las solicitudes realizadas a través del servidor MCP de SMUS:
aws:ViaAWSMCPService— Se configuratruepara cualquier solicitud realizada a través de un servidor MCP AWS gestionado.aws:CalledViaAWSMCP— Se establece como principal de servicio del servidor MCP (por ejemplo,sagemaker-unified-studio-mcp.amazonaws.com).
Puede utilizar estas claves de condición para controlar el acceso a sus recursos cuando las solicitudes se originan en un servidor MCP AWS gestionado.
Ejemplo: Permita las operaciones de EMR solo cuando se acceda a través del servidor MCP de 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" } } } ] }
Ejemplo: deniegue todas las operaciones a través de cualquier servidor MCP AWS administrado:
{ "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "Bool": { "aws:ViaAWSMCPService": "true" } } }
Ejemplo: denegar operaciones específicas a través de un servidor MCP AWS administrado específico:
{ "Effect": "Deny", "Action": ["glue:GetJobRun", "glue:StartJobRun"], "Resource": "*", "Condition": { "StringEquals": { "aws:CalledViaAWSMCP": "sagemaker-unified-studio-mcp.amazonaws.com" } } }
Para obtener más información sobre las claves de condición, consulte las claves de contexto de condición AWS globales en la Guía del usuario de IAM.