

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon Bedrock에서 Amazon Bedrock Flows의 서비스 역할 생성
<a name="flows-permissions"></a>

Amazon Bedrock에서 흐름을 만들고 관리하려면 이 페이지에 설명된 필수 권한이 있는 서비스 역할을 사용해야 합니다. Amazon Bedrock이 콘솔에서 자동으로 생성하는 서비스 역할을 사용하거나 직접 사용자 지정한 역할을 사용할 수 있습니다.

**참고**  
Amazon Bedrock이 콘솔에서 자동으로 생성하는 서비스 역할을 사용하는 경우, 흐름에 노드를 추가하고 흐름을 저장하면 동적으로 권한이 연결됩니다. 그러나 노드를 제거하면 권한이 삭제되지 않으므로 더 이상 필요하지 않은 권한을 삭제해야 합니다. 사용자를 위해 생성된 역할에 대한 권한을 관리하려면 IAM 사용자 안내서의 [역할 수정](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_modify.html) 단계를 따르세요.

Amazon Bedrock Flows에 대한 사용자 지정 서비스 역할을 생성하려면 [AWS서비스에 권한을 위임할 역할 생성의 단계에 따라 IAM 역할을](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) 생성합니다. 그런 다음, 역할에 다음과 같은 권한을 연결합니다.
+ 신뢰 정책
+ 다음의 ID 기반 권한:
  + 흐름에서 사용할 Amazon Bedrock 기본 모델에 대한 액세스 권한. 흐름에 사용되는 각 모델을 `Resource` 목록에 추가합니다.
  + 프로비저닝된 처리량을 사용하여 모델을 간접적으로 호출하는 경우, 프로비저닝된 모델에 액세스하고 간접적으로 호출할 수 있는 권한. 흐름에 사용되는 각 모델을 `Resource` 목록에 추가합니다.
  + 사용자 지정 모델을 간접적으로 호출하는 경우, 사용자 지정 모델에 액세스하고 이를 간접적으로 호출할 수 있는 권한. 흐름에 사용되는 각 모델을 `Resource` 목록에 추가합니다.
  + 흐름에 추가하는 노드를 기반으로 하는 권한:
    + 프롬프트 관리의 프롬프트를 사용하는 프롬프트 노드를 포함하는 경우, 프롬프트에 액세스할 수 있는 권한이 필요합니다. 흐름에 사용되는 각 프롬프트를 `Resource` 목록에 추가합니다.
    + 지식 기반 노드를 포함하는 경우, 지식 기반을 쿼리할 수 있는 권한이 필요합니다. 흐름에서 쿼리된 각 지식 기반을 `Resource` 목록에 추가합니다.
    + 에이전트 노드를 포함하는 경우, 에이전트의 별칭을 간접적으로 호출할 수 있는 권한이 필요합니다. 흐름에서 간접적으로 호출된 각 에이전트를 `Resource` 목록에 추가합니다.
    + S3 검색 노드를 포함하는 경우, 데이터를 검색할 Amazon S3 버킷에 액세스할 수 있는 권한이 필요합니다. 데이터가 검색되는 각 버킷을 `Resource` 목록에 추가합니다.
    + S3 스토리지 노드를 포함하는 경우, 출력 데이터가 저장될 Amazon S3 버킷에 쓸 수 있는 권한이 필요합니다. 데이터가 기록되는 각 버킷을 `Resource` 목록에 추가합니다.
    + 지식 기반 노드 또는 프롬프트 노드에 대한 가드레일을 포함하는 경우 흐름에 가드레일을 적용할 수 있는 권한이 필요합니다. 흐름에 사용되는 각 가드레일을 `Resource` 목록에 추가합니다.
    + Lambda 노드를 포함하는 경우 Lambda 함수를 간접적으로 호출할 수 있는 권한이 필요합니다. 간접적으로 호출해야 하는 각 Lambda 함수를 `Resource` 목록에 추가합니다.
    + Amazon Lex 노드를 포함하는 경우 Amazon Lex 봇을 사용할 수 있는 권한이 필요합니다. 사용해야 하는 각 봇 별칭을 `Resource` 목록에 추가합니다.
    + 흐름에서 간접적으로 호출된 리소스를 암호화한 경우 키를 복호화할 수 있는 권한이 필요합니다. 각 키를 `Resource` 목록에 추가합니다.
+ 또한, 흐름을 암호화하는 경우 흐름을 암호화하는 데 사용할 KMS 키에 키 정책을 연결해야 합니다.

**참고**  
최근에 구현된 변경 사항은 다음과 같습니다.  
이전에AWS Lambda는 및 Amazon Lex 리소스가 Amazon Bedrock 서비스 보안 주체를 사용하여 호출되었습니다. 이 동작은 2024-11-22 이후에 생성된 흐름에 대해 변경되고 있으며 Amazon Bedrock Flows 서비스 역할은 AWS Lambda및 Amazon Lex 리소스를 호출하는 데 사용됩니다. 2024-11-22 이전에 이러한 리소스 중 하나를 사용하는 흐름을 생성한 경우 Amazon Bedrock Flows 서비스 역할을 AWS Lambda및 Amazon Lex 권한으로 업데이트해야 합니다.
이전에는 `bedrock:GetPrompt` 작업을 사용하여 프롬프트 관리 리소스가 렌더링되었습니다. 이 동작은 2024년 11월 22일 이후에 생성된 흐름에 대해 변경되며 `bedrock:RenderPrompt` 작업은 프롬프트 리소스를 렌더링하는 데 사용됩니다. 2024년 11월 22일 이전에 프롬프트 리소스를 사용하는 흐름을 생성한 경우 Amazon Bedrock Flows 서비스 역할을 `bedrock:RenderPrompt` 권한으로 업데이트해야 합니다.
Amazon Bedrock이 콘솔에서 자동으로 생성한 서비스 역할을 사용하는 경우, 흐름에 노드를 추가하고 흐름을 저장하면 동적으로 권한이 연결됩니다.

**Topics**
+ [신뢰 관계](#flows-permissions-trust)
+ [흐름 서비스 역할에 대한 ID 기반 권한입니다.](#flows-permissions-identity)

## 신뢰 관계
<a name="flows-permissions-trust"></a>

Amazon Bedrock이 이 역할을 수임하고 프롬프트 흐름을 관리할 수 있도록 다음 신뢰 정책을 흐름 실행 역할에 연결합니다. 필요에 따라 *값*을 바꿉니다. 이 정책에는 보안 모범 사례로 사용할 것을 권장하는 선택적 조건 키([Amazon Bedrock의 조건 키](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys) 및 [AWS 전역 조건 컨텍스트 키](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys) 참조)가 `Condition` 필드에 포함되어 있습니다.

**참고**  
흐름 ID를 생성한 후 *\$1*를 흐름 ID로 바꾸는 것이 좋습니다.

------
#### [ 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/*"
                }
            }
        }
    ]
}
```

------

## 흐름 서비스 역할에 대한 ID 기반 권한입니다.
<a name="flows-permissions-identity"></a>

다음 정책을 연결하여 서비스 역할에 대한 권한을 제공하고 필요에 따라 *값*을 바꿉니다. 정책에는 다음과 같은 설명이 포함되어 있습니다. 사용 사례에 해당되지 않는 설명은 생략합니다. 이 정책에는 보안 모범 사례로 사용할 것을 권장하는 선택적 조건 키([Amazon Bedrock의 조건 키](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys) 및 [AWS 전역 조건 컨텍스트 키](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys) 참조)가 `Condition` 필드에 포함되어 있습니다.
+ 흐름에서 사용할 Amazon Bedrock 기본 모델에 대한 액세스 권한. 흐름에 사용되는 각 모델을 `Resource` 목록에 추가합니다.
+ 프로비저닝된 처리량을 사용하여 모델을 간접적으로 호출하는 경우, 프로비저닝된 모델에 액세스하고 간접적으로 호출할 수 있는 권한. 흐름에 사용되는 각 모델을 `Resource` 목록에 추가합니다.
+ 사용자 지정 모델을 간접적으로 호출하는 경우, 사용자 지정 모델에 액세스하고 이를 간접적으로 호출할 수 있는 권한. 흐름에 사용되는 각 모델을 `Resource` 목록에 추가합니다.
+ 흐름에 추가하는 노드를 기반으로 하는 권한:
  + 프롬프트 관리의 프롬프트를 사용하는 프롬프트 노드를 포함하는 경우, 프롬프트에 액세스할 수 있는 권한이 필요합니다. 흐름에 사용되는 각 프롬프트를 `Resource` 목록에 추가합니다.
  + 지식 기반 노드를 포함하는 경우, 지식 기반을 쿼리할 수 있는 권한이 필요합니다. 흐름에서 쿼리된 각 지식 기반을 `Resource` 목록에 추가합니다.
  + 에이전트 노드를 포함하는 경우, 에이전트의 별칭을 간접적으로 호출할 수 있는 권한이 필요합니다. 흐름에서 간접적으로 호출된 각 에이전트를 `Resource` 목록에 추가합니다.
  + S3 검색 노드를 포함하는 경우, 데이터를 검색할 Amazon S3 버킷에 액세스할 수 있는 권한이 필요합니다. 데이터가 검색되는 각 버킷을 `Resource` 목록에 추가합니다.
  + S3 스토리지 노드를 포함하는 경우, 출력 데이터가 저장될 Amazon S3 버킷에 쓸 수 있는 권한이 필요합니다. 데이터가 기록되는 각 버킷을 `Resource` 목록에 추가합니다.
  + 지식 기반 노드 또는 프롬프트 노드에 대한 가드레일을 포함하는 경우 흐름에 가드레일을 적용할 수 있는 권한이 필요합니다. 흐름에 사용되는 각 가드레일을 `Resource` 목록에 추가합니다.
  + Lambda 노드를 포함하는 경우 Lambda 함수를 간접적으로 호출할 수 있는 권한이 필요합니다. 간접적으로 호출해야 하는 각 Lambda 함수를 `Resource` 목록에 추가합니다.
  + Amazon Lex 노드를 포함하는 경우 Amazon Lex 봇을 사용할 수 있는 권한이 필요합니다. 사용해야 하는 각 봇 별칭을 `Resource` 목록에 추가합니다.
  + 흐름에서 간접적으로 호출된 리소스를 암호화한 경우 키를 복호화할 수 있는 권한이 필요합니다. 각 키를 `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"
                }
            }
        }
    ]
}
```

------