

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.

# Creación de un rol de servicio para Flujos de Amazon Bedrock en Amazon Bedrock
<a name="flows-permissions"></a>

Para crear y administrar un flujo en Amazon Bedrock, debe utilizar un rol de servicio con los permisos necesarios que se describen en esta página. Puede usar un rol de servicio que Amazon Bedrock cree automáticamente para usted en la consola o usar uno que personalice usted mismo.

**nota**  
Si usa el rol de servicio que Amazon Bedrock crea automáticamente para usted en la consola, los permisos se asociarán de forma dinámica si usted agrega nodos al flujo y lo guarda. Sin embargo, si elimina nodos, los permisos no se eliminarán, por lo que tendrá que eliminar los permisos que ya no necesite. Para administrar los permisos del rol que se ha creado para usted, siga los pasos que se indican en [Modificación de un rol](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_modify.html) en la Guía del usuario de IAM.

Para crear un rol de servicio personalizado para Amazon Bedrock Flows, cree un rol de IAM siguiendo los pasos que se indican en [Crear un rol para delegar permisos a un AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) servicio. A continuación, asocie los siguientes permisos al rol.
+ Política de confianza
+ Los siguientes permisos basados en identidades:
  + Acceso a los modelos base de Amazon Bedrock que utilizará el flujo. Añada a la lista `Resource` todos los modelos que se utilizan en el flujo.
  + Si invoca un modelo mediante el rendimiento aprovisionado, permisos para acceder e invocar el modelo aprovisionado. Añada a la lista `Resource` todos los modelos que se utilizan en el flujo.
  + Si invoca un modelo personalizado, permisos para acceder al modelo personalizado e invocarlo. Añada a la lista `Resource` todos los modelos que se utilizan en el flujo.
  + Permisos basados en los nodos que añada al flujo:
    + Si incluye nodos de petición que utilizan peticiones de Administración de peticiones, necesita permisos para acceder a la petición. Añada a la lista `Resource` todas las peticiones que se utilizan en el flujo.
    + Si incluye nodos de base de conocimiento, necesita permisos para consultar la base de conocimiento. Añada a la lista `Resource` todas las bases de conocimiento consultadas en el flujo.
    + Si incluye nodos de agente, necesita permisos para invocar un alias del agente. Añada a la lista `Resource` todos los agentes que se invocan en el flujo.
    + Si incluye nodos de recuperación de S3, necesita permisos para acceder al bucket de Amazon S3 del que se recuperarán los datos. Agregue a la lista `Resource` cada bucket del que se obtengan datos.
    + Si incluye nodos de almacenamiento de S3, necesita permisos para escribir en el bucket de Amazon S3 en el que se almacenarán los datos de salida. Agregue a la lista `Resource` cada bucket en el que se escriben datos.
    + Si incluye barreras de protección para un nodo de base de conocimiento o un nodo de petición, necesitará permisos para aplicar las barreras de protección en un flujo. Añada a la lista `Resource` todas las barreras de protección que se utilizan en el flujo.
    + Si incluye nodos de Lambda, necesitará permisos para invocar la función de Lambda. Añada a la lista `Resource` todas las funciones de Lambda que deban invocarse.
    + Si incluye nodos de Amazon Lex, necesitará permisos para usar el bot de Amazon Lex. Añada a la lista `Resource` todos los alias de bots que tenga que utilizar.
    + Si ha cifrado algún recurso invocado en un flujo, necesita permisos para descifrar la clave. Agregue cada clave a la lista `Resource`.
+ Si cifra el flujo, también deberá asociar una política de claves a la clave de KMS que utilice para cifrar el flujo.

**nota**  
Se han implementado recientemente los siguientes cambios:  
Anteriormente, AWS Lambda los recursos de Amazon Lex se invocaban mediante el servicio principal de Amazon Bedrock. Este comportamiento está cambiando para los flujos creados después del 22 de noviembre de 2024 y la función de servicio Amazon Bedrock Flows se utilizará para invocar los recursos y AWS Lambda los de Amazon Lex. Si creó algún flujo que utilice alguno de estos recursos antes del 22 de noviembre de 2020, debe actualizar sus funciones de servicio de Amazon Bedrock Flows con los permisos de Amazon AWS Lambda Lex.
Anteriormente, los recursos de Administración de peticiones se representaban mediante la acción `bedrock:GetPrompt`. Este comportamiento ha cambiado en los flujos creados después del 22 de noviembre de 2024 y se utilizará la acción `bedrock:RenderPrompt` para representar el recurso de petición. Si creó algún flujo que usa un recurso de petición antes del 22 de noviembre de 2024, debe actualizar sus roles de servicio de Flujos de Amazon Bedrock con los permisos de `bedrock:RenderPrompt`.
Si usa el rol de servicio que Amazon Bedrock crea automáticamente para usted en la consola, Amazon Bedrock asociará los permisos correctos de forma dinámica cuando guarde el flujo.

**Topics**
+ [Relación de confianza](#flows-permissions-trust)
+ [Permisos basados en identidades para el rol de servicio de los flujos.](#flows-permissions-identity)

## Relación de confianza
<a name="flows-permissions-trust"></a>

Asocie la siguiente política de confianza al rol de ejecución del flujo para permitir que Amazon Bedrock asuma este rol y administre un flujo. Sustitúyalo según sea necesario. {{values}} La política contiene claves de condición opcionales (consulte [Claves de condición para Amazon Bedrock](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys) y [Claves de contexto de condición globales de AWS](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys)) en el campo `Condition` que es una práctica de seguridad que recomendamos.

**nota**  
Como práctica recomendada, sustituya el {{\*}} por un identificador de flujo después de haberlo creado.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "{{FlowsTrustBedrock}}",
            "Effect": "Allow",
            "Principal": {
                "Service": "bedrock.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "{{123456789012}}"
                },
                "ArnLike": {
                    "AWS:SourceArn": "arn:aws:bedrock:{{us-east-1}}:{{123456789012}}:flow/{{*}}"
                }
            }
        }
    ]
}
```

------

## Permisos basados en identidades para el rol de servicio de los flujos.
<a name="flows-permissions-identity"></a>

Adjunte la siguiente política para proporcionar permisos para el rol de servicio y sustitúyala {{values}} según sea necesario. La política contiene las siguientes instrucciones. Omita una instrucción si no es aplicable a su caso de uso. La política contiene claves de condición opcionales (consulte [Claves de condición para Amazon Bedrock](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys) y [Claves de contexto de condición globales de AWS](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys)) en el campo `Condition` que es una práctica de seguridad que recomendamos.
+ Acceso a los modelos base de Amazon Bedrock que utilizará el flujo. Añada a la lista `Resource` todos los modelos que se utilizan en el flujo.
+ Si invoca un modelo mediante el rendimiento aprovisionado, permisos para acceder e invocar el modelo aprovisionado. Añada a la lista `Resource` todos los modelos que se utilizan en el flujo.
+ Si invoca un modelo personalizado, permisos para acceder al modelo personalizado e invocarlo. Añada a la lista `Resource` todos los modelos que se utilizan en el flujo.
+ Permisos basados en los nodos que añada al flujo:
  + Si incluye nodos de petición que utilizan peticiones de Administración de peticiones, necesita permisos para acceder a la petición. Añada a la lista `Resource` todas las peticiones que se utilizan en el flujo.
  + Si incluye nodos de base de conocimiento, necesita permisos para consultar la base de conocimiento. Añada a la lista `Resource` todas las bases de conocimiento consultadas en el flujo.
  + Si incluye nodos de agente, necesita permisos para invocar un alias del agente. Añada a la lista `Resource` todos los agentes que se invocan en el flujo.
  + Si incluye nodos de recuperación de S3, necesita permisos para acceder al bucket de Amazon S3 del que se recuperarán los datos. Agregue a la lista `Resource` cada bucket del que se obtengan datos.
  + Si incluye nodos de almacenamiento de S3, necesita permisos para escribir en el bucket de Amazon S3 en el que se almacenarán los datos de salida. Agregue a la lista `Resource` cada bucket en el que se escriben datos.
  + Si incluye barreras de protección para un nodo de base de conocimiento o un nodo de petición, necesitará permisos para aplicar las barreras de protección en un flujo. Añada a la lista `Resource` todas las barreras de protección que se utilizan en el flujo.
  + Si incluye nodos de Lambda, necesitará permisos para invocar la función de Lambda. Añada a la lista `Resource` todas las funciones de Lambda que deban invocarse.
  + Si incluye nodos de Amazon Lex, necesitará permisos para usar el bot de Amazon Lex. Añada a la lista `Resource` todos los alias de bots que tenga que utilizar.
  + Si ha cifrado algún recurso invocado en un flujo, necesita permisos para descifrar la clave. Agregue cada clave a la lista `Resource`.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "{{InvokeModel}}",
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeModel"
            ],
            "Resource": [
                "arn:aws:bedrock:{{us-east-1}}::foundation-model/{{ModelId}}"
            ]
        },
        {
            "Sid": "{{InvokeProvisionedThroughput}}",
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeModel",
                "bedrock:GetProvisionedModelThroughput"
            ],
            "Resource": [
                "arn:aws:bedrock:{{us-east-1}}:{{123456789012}}:provisioned-model/{{ModelId}}"
            ]
        },
        {
            "Sid": "{{InvokeCustomModel}}",
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeModel",
                "bedrock:GetCustomModel"
            ],
            "Resource": [
                "arn:aws:bedrock:{{us-east-1}}:{{123456789012}}:custom-model/{{ModelId}}"
            ]
        },
        {
            "Sid": "{{UsePromptFromPromptManagement}}",
            "Effect": "Allow",
            "Action": [
                "bedrock:RenderPrompt"
            ],
            "Resource": [
                "arn:aws:bedrock:{{us-east-1}}:{{123456789012}}:prompt/{{PromptId}}"
            ]
        },
        {
            "Sid": "{{QueryKnowledgeBase}}",
            "Effect": "Allow",
            "Action": [
                "bedrock:Retrieve"
            ],
            "Resource": [
                "arn:aws:bedrock:{{us-east-1}}:{{123456789012}}:knowledge-base/{{KnowledgeBaseId}}"
            ]
        },
        {
            "Sid": "{{InvokeAgent}}",
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeAgent"
            ],
            "Resource": [
                "arn:aws:bedrock:{{us-east-1}}:{{123456789012}}:agent-alias/{{AgentId}}/{{AgentAliasId}}"
            ]
        },
        {
            "Sid": "{{AccessS3Bucket}}",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "{{123456789012}}"
                }
            }
        },
        {
            "Sid": "{{WriteToS3Bucket}}",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::{{amzn-s3-demo-bucket}}",
                "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "{{123456789012}}"
                }
            }
        },
        {
            "Sid": "{{GuardrailPermissions}}",
            "Effect": "Allow",
            "Action": [
                "bedrock:ApplyGuardrail"
            ],
            "Resource": [
                "arn:aws:bedrock:{{us-east-1}}:{{123456789012}}:guardrail/{{GuardrailId}}"
            ]
        },
        {
            "Sid": "{{LambdaPermissions}}",
            "Effect": "Allow",
            "Action": [
                "lambda:InvokeFunction"
            ],
            "Resource": [
                "arn:aws:lambda:{{us-east-1}}:{{123456789012}}:function:FunctionId"
            ]
        },
        {
            "Sid": "{{AmazonLexPermissions}}",
            "Effect": "Allow",
            "Action": [
                "lex:RecognizeUtterance"
            ],
            "Resource": [ 
                "arn:aws:lex:{{us-east-1}}:{{123456789012}}:bot-alias/{{BotId}}/{{BotAliasId}}"
            ]
        },
        {
            "Sid": "{{KMSPermissions}}",
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": [
                "arn:aws:kms:{{us-east-1}}:{{123456789012}}:key/{{KeyId}}"
            ],
             "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "{{123456789012}}"
                }
            }
        }
    ]
}
```

------