View a markdown version of this page

브라우저 프록시 사용 - Amazon Bedrock AgentCore

브라우저 프록시 사용

Amazon Bedrock AgentCore Browser는 자체 외부 프록시 서버를 통한 브라우저 트래픽 라우팅을 지원합니다. 이를 통해 조직은 다음을 수행할 수 있습니다.

  • 알려진 송신 IP가 있는 프록시를 통해 트래픽을 라우팅하여 IP 안정성 달성, AWS IP 주소 교체로 인한 재인증 주기 제거 IPs

  • IP 기반 액세스 제어가 필요한 서비스에 안정적이고 제어 가능한 송신 주소를 제공하여 IP 허용 목록 지원

  • 내부 웹 페이지 및 리소스에 액세스하기 위해 기존 프록시 서버를 통해 라우팅하여 기업 인프라와 통합

개요

프록시 구성으로 브라우저 세션을 생성하면 AgentCore 브라우저는 지정된 프록시 서버를 통해 HTTP 및 HTTPS 트래픽을 라우팅하도록 브라우저를 구성합니다.

브라우저는 고객 관리형 프록시 서버를 통해 브라우저 세션에서 대상 웹 사이트로의 트래픽 라우팅을 보여주는 요청 흐름을 프록시합니다.

요청 흐름:

  1. 프록시 서버를 proxyConfiguration 지정하는를 StartBrowserSession 사용하여를 호출합니다.

  2. 인증을 사용하는 경우 AgentCore는 AWS Secrets Manager에서 프록시 자격 증명을 검색합니다.

  3. 브라우저 세션은 프록시 구성이 적용된 상태로 시작됩니다.

  4. 브라우저 트래픽은 도메인 라우팅 규칙에 따라 프록시 서버를 통해 라우팅됩니다.

  5. 프록시 서버는 대상 웹 사이트에 요청을 전달합니다.

프록시 서버는 사용자가 소유하고 관리하는 인프라입니다. AgentCore 브라우저는 이를 클라이언트로 연결합니다.

프록시 구성은 시작 시 브라우저 인스턴스에 Chromium --proxy-server 플래그를 적용하여 브라우저 수준에서 지정된 프록시를 통해 트래픽을 전달합니다. 런타임 중에 브라우저 수준 설정을 수정할 수 있는 경우와 같이 네트워크 계층을 적용해야 하는 시나리오의 경우 자체 VPC 내에 브라우저 세션을 배포합니다. VPC용 Amazon Bedrock AgentCore 런타임 및 도구 구성을 참조하세요.

사전 조건

브라우저 프록시를 구성하기 전에 다음을 갖추어야 합니다.

  • 일반 브라우저 사전 조건 - 표준 브라우저 도구 설정을 완료합니다. AgentCore 브라우저 시작하기를 참조하세요.

  • 프록시 서버 - 퍼블릭 인터넷에서 액세스할 수 있고(또는 VPC 구성을 사용하는 경우 VPC 내에서 연결할 수 있음) HTTPS 트래픽 터널링을 위한 HTTP CONNECT 메서드를 지원하는 HTTP/HTTPS 프록시 서버입니다.

  • AWS Secrets Manager 보안 암호(인증 사용 시) - usernamepassword 키를 사용하여 JSON 형식의 프록시 자격 증명을 포함하는 보안 암호입니다.

  • IAM 권한(인증 사용 시) - IAM 자격 증명 호출에는 자격 증명 보안 암호에 대한 secretsmanager:GetSecretValue 권한이 StartBrowserSession 있어야 합니다.

시작하기

이 섹션에서는 프록시를 통해 브라우저 트래픽을 라우팅하는 가장 간단한 구성을 보여줍니다.

1단계: 자격 증명 보안 암호 생성(인증 사용 시)

프록시에 인증이 필요한 경우 AWS Secrets Manager에서 보안 암호를 생성합니다.

aws secretsmanager create-secret \ --name "my-proxy-credentials" \ --secret-string '{"username":"<your-username>","password":"<your-password>"}'

자격 증명 형식 요구 사항:

Field 허용되는 문자

username

영숫자 더하기 @ . _ + = -

password

영숫자와 @ . _ + = - ! # $ % *

허용되지 않는 문자: 콜론(:), 줄 바꿈, 공백, 따옴표.

2단계: IAM 권한 추가

브라우저 세션을 생성할 IAM 자격 증명에이 정책을 추가합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:AWS Region:AWS account:secret:secret-name*" } ] }

3단계: 프록시를 사용하여 브라우저 세션 생성

AWS CLI, SDK 또는 API를 사용하여 프록시 구성으로 브라우저 세션을 생성할 수 있습니다.

AWS CLI
  1. AWS CLI를 사용하여 프록시로 브라우저 세션을 시작하려면:

    aws bedrock-agentcore start-browser-session \ --browser-identifier "aws.browser.v1" \ --name "my-proxy-session" \ --proxy-configuration '{ "proxies": [{ "externalProxy": { "server": "your-proxy-hostname", "port": 8080, "credentials": { "basicAuth": { "secretArn": "arn:aws:secretsmanager:region:account-id:secret:secret-name" } } } }] }'

    자격 증명 대신 IP 허용 목록을 사용하는 프록시의 경우 credentials 필드를 생략합니다.

    aws bedrock-agentcore start-browser-session \ --browser-identifier "aws.browser.v1" \ --name "my-proxy-session" \ --proxy-configuration '{ "proxies": [{ "externalProxy": { "server": "your-proxy-hostname", "port": 8080 } }] }'
Boto3
  1. AWS SDK for Python(Boto3)을 사용하여 프록시로 브라우저 세션을 시작하려면:

    import boto3 client = boto3.client('bedrock-agentcore', region_name='region') response = client.start_browser_session( browserIdentifier="aws.browser.v1", name="my-proxy-session", proxyConfiguration={ "proxies": [{ "externalProxy": { "server": "your-proxy-hostname", "port": 8080, "credentials": { "basicAuth": { "secretArn": "arn:aws:secretsmanager:region:account-id:secret:secret-name" } } } }] } ) print(f"Session ID: {response['sessionId']}")

    자격 증명 대신 IP 허용 목록을 사용하는 프록시의 경우 credentials 필드를 생략합니다.

    proxyConfiguration={ "proxies": [{ "externalProxy": { "server": "your-proxy-hostname", "port": 8080 } }] }
API
  1. API를 사용하여 프록시로 브라우저 세션을 시작하려면:

    PUT /browsers/aws.browser.v1/sessions/start HTTP/1.1 Host: bedrock-agentcore.region.amazonaws.com Content-Type: application/json Authorization: AWS4-HMAC-SHA256 ... { "name": "my-proxy-session", "proxyConfiguration": { "proxies": [{ "externalProxy": { "server": "your-proxy-hostname", "port": 8080, "credentials": { "basicAuth": { "secretArn": "arn:aws:secretsmanager:region:account-id:secret:secret-name" } } } }] } }

구성 옵션

도메인 기반 라우팅

domainPatterns를 사용하여 지정된 프록시를 통해 특정 도메인을 라우팅합니다.

AWS CLI
  1. aws bedrock-agentcore start-browser-session \ --browser-identifier "aws.browser.v1" \ --name "domain-routing-session" \ --proxy-configuration '{ "proxies": [ { "externalProxy": { "server": "corp-proxy.example.com", "port": 8080, "domainPatterns": [".company.com", ".internal.corp"] } }, { "externalProxy": { "server": "general-proxy.example.com", "port": 8080 } } ] }'
Boto3
  1. proxyConfiguration={ "proxies": [ { "externalProxy": { "server": "corp-proxy.example.com", "port": 8080, "domainPatterns": [".company.com", ".internal.corp"] } }, { "externalProxy": { "server": "general-proxy.example.com", "port": 8080 } } ] }
API
  1. { "proxyConfiguration": { "proxies": [ { "externalProxy": { "server": "corp-proxy.example.com", "port": 8080, "domainPatterns": [".company.com", ".internal.corp"] } }, { "externalProxy": { "server": "general-proxy.example.com", "port": 8080 } } ] } }

이 구성을 사용하는 경우:

  • *.company.com 및 *.internal.corp에 대한 요청은를 통해 라우팅됩니다. corp-proxy.example.com

  • 다른 모든 요청은를 통해 라우팅됩니다general-proxy.example.com(기본값).

도메인 패턴 형식:

패턴 일치 항목 일치하지 않음

.example.com

example.com , www.example.com , api.example.com

notexample.com

example.com

example.com (정확한 일치만 해당)

www.example.com

하위 도메인에 .example.com (선행 점)을 사용합니다. *.example.com 사용하지 마세요.

도메인 우회

프록시 없이 직접 연결해야 하는 도메인bypass.domainPatterns에를 사용합니다.

AWS CLI
  1. aws bedrock-agentcore start-browser-session \ --browser-identifier "aws.browser.v1" \ --name "bypass-session" \ --proxy-configuration '{ "proxies": [{ "externalProxy": { "server": "proxy.example.com", "port": 8080 } }], "bypass": { "domainPatterns": [".amazonaws.com"] } }'
Boto3
  1. proxyConfiguration={ "proxies": [{ "externalProxy": { "server": "proxy.example.com", "port": 8080 } }], "bypass": { "domainPatterns": [".amazonaws.com"] } }
API
  1. { "proxyConfiguration": { "proxies": [{ "externalProxy": { "server": "proxy.example.com", "port": 8080 } }], "bypass": { "domainPatterns": [".amazonaws.com"] } } }
참고

프록시 구성은 브라우저 수준 라우팅 설정이며 네트워크 수준 트래픽 제어를 제공하지 않습니다. 네트워크 계층 적용을 위해 VPC에 브라우저 세션을 배포합니다. VPC용 Amazon Bedrock AgentCore 런타임 및 도구 구성을 참조하세요.

라우팅 우선 순위

이 우선 순위(가장 높음에서 낮음)에 따른 트래픽 경로:

  1. 도메인 우회 - 일치하는 도메인은 직접 bypass.domainPatterns 연결됩니다.

  2. 프록시 도메인 패턴 - 프록시의 domainPatterns 경로와 일치하는 도메인이 해당 프록시를 통과합니다(배열 순서에 따라 첫 번째 일치가 성공함).

  3. 기본 프록시 - 일치하지 않는 도메인은 없이 프록시를 통해 라우팅됩니다domainPatterns.

전체 예제

다음 예제에서는 도메인 패턴, 우회 도메인 및 인증 자격 증명이 포함된 전체 프록시 구성을 보여줍니다.

AWS CLI
  1. aws bedrock-agentcore start-browser-session \ --browser-identifier "aws.browser.v1" \ --name "proxy-session" \ --proxy-configuration '{ "proxies": [{ "externalProxy": { "server": "proxy-hostname", "port": 8080, "domainPatterns": [".company.com"], "credentials": { "basicAuth": { "secretArn": "arn:aws:secretsmanager:region:account-id:secret:secret-name" } } } }], "bypass": { "domainPatterns": [".amazonaws.com"] } }'
Boto3
  1. import boto3 client = boto3.client('bedrock-agentcore', region_name='region') response = client.start_browser_session( browserIdentifier="aws.browser.v1", name="proxy-session", proxyConfiguration={ "proxies": [{ "externalProxy": { "server": "proxy-hostname", "port": 8080, "domainPatterns": [".company.com"], "credentials": { "basicAuth": { "secretArn": "arn:aws:secretsmanager:region:account-id:secret:secret-name" } } } }], "bypass": { "domainPatterns": [".amazonaws.com"] } } ) print(f"Session ID: {response['sessionId']}")
API
  1. PUT /browsers/aws.browser.v1/sessions/start HTTP/1.1 Host: bedrock-agentcore.region.amazonaws.com Content-Type: application/json Authorization: AWS4-HMAC-SHA256 ... { "name": "proxy-session", "proxyConfiguration": { "proxies": [{ "externalProxy": { "server": "proxy-hostname", "port": 8080, "domainPatterns": [".company.com"], "credentials": { "basicAuth": { "secretArn": "arn:aws:secretsmanager:region:account-id:secret:secret-name" } } } }], "bypass": { "domainPatterns": [".amazonaws.com"] } } }

사용 사례

세션 기반 포털의 IP 안정성

의료 및 금융 포털은 종종 소스 IP 주소를 기반으로 세션을 검증합니다. AWS IP 주소를 교체하면 재인증이 자주 발생합니다. 안정적인 송신 IPs가 있는 프록시를 통해 트래픽을 라우팅하여 세션 연속성을 유지합니다.

기업 인프라 통합

기업 프록시를 통해 트래픽을 라우팅하는 조직은이 방법을 AgentCore 브라우저 세션으로 확장하여 프록시 기반 연결이 필요한 내부 웹 페이지 및 리소스에 액세스할 수 있습니다.

지리적 콘텐츠 액세스

특정 지리적 위치의 프록시를 통해 트래픽을 라우팅하여 리전별 콘텐츠에 액세스하거나 리전별 웹 사이트 변형을 테스트합니다.

파트너 네트워크 액세스

다른 트래픽에 일반 프록시를 사용하는 동안 전용 프록시 인프라를 통해 파트너별 트래픽을 라우팅합니다.

세션 동작

구성 수명 주기

  • 생성 시 설정 - 프록시 구성은 세션 생성 시 한 번 설정됩니다. 런타임 시 구성 변경은 지원되지 않습니다. 다른 설정을 사용하도록 새 세션을 생성합니다.

  • 세션 범위 - 각 브라우저 세션에는 독립적인 프록시 구성이 있습니다.

  • 제한 시간 - 표준 세션 제한 시간이 적용됩니다. 세션이 종료되면 프록시 구성이 삭제됩니다.

연결 동작

  • Fail-open - 세션 생성 시 프록시 연결이 확인되지 않습니다. 사용할 수 없는 프록시로 구성된 세션은 페이지를 로드할 때 오류가 표시됩니다.

  • 런타임 오류 - 연결 실패는 브라우저 오류 페이지로 표시되며, 문제 해결을 위해 라이브 보기에 표시됩니다.

  • 자동 재시도 없음 - 실패한 요청은 자동으로 재시도되지 않습니다.

교차 계정 보안 암호 액세스

자격 증명 보안 암호가 다른 AWS 계정에 있는 경우 다음을 구성합니다.

보안 암호 리소스 정책(보안 암호를 소유한 계정에서):

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::caller-account-id:root"}, "Action": "secretsmanager:GetSecretValue", "Resource": "*" }] }

KMS 키 정책(고객 관리형 KMS 키를 사용하는 경우):

{ "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::caller-account-id:root"}, "Action": "kms:Decrypt", "Resource": "*" }

보안 고려 사항

자격 증명 보호

  • 자격 증명은 AWS Secrets Manager에 저장되고 IAM 자격 증명을 사용하여 가져옵니다.

  • 자격 증명은 API 응답에 반환되지 않습니다.는 만 GetBrowserSession 반환합니다secretArn.

  • 자격 증명은 로그에 기록되지 않습니다.

액세스 관리

  • IAM 권한은 어떤 자격 증명 보안 암호를 사용할 수 있는지 제어합니다.

  • 교차 계정 액세스에는 명시적 리소스 정책이 필요합니다.

성능 고려 사항

  • 용량 - 프록시가 예상 요청 볼륨을 처리할 수 있는지 확인합니다.

  • 우회 - 지연 시간에 민감한 호출을 bypass.domainPatterns 위해에 AWS 엔드포인트를 추가합니다.

  • 근접성 - AWS 리전과 지리적으로 가까운 프록시를 사용합니다.

제약 조건

제약 조건 Limit 조정 가능

세션당 최대 프록시 수

5

프록시당 최대 도메인 패턴

100

최대 우회 도메인 패턴

100

서버 호스트 이름 길이

253자

아니요

도메인 패턴 길이

253자

아니요

포트 범위

1~65535

아니요

조정 가능한 제약 조건에 대한 증가를 요청하려면 AWS Support에 문의하세요.

제한 사항

브라우저 프록시를 구성하기 전에 다음 제한 사항을 검토하여 기능이 요구 사항을 충족하는지 확인하세요.

제한 사항 세부 정보

트래픽 라우팅

프록시 구성은 세션 시작 시 적용되는 브라우저 수준 설정입니다. 네트워크 수준 제어가 아니며 모든 트래픽이 프록시를 전송한다고 보장하지 않습니다. 네트워크 계층 적용의 경우 Configure Amazon Bedrock AgentCore Runtime and tools for VPC를 사용합니다.

지원되는 프로토콜

HTTP 및 HTTPS 프록시만 해당됩니다. SOCKS4 및 SOCKS5 프록시는 지원되지 않습니다.

Authentication

HTTP 기본 인증 또는 인증 없음(IP 허용 목록). NTLM, Kerberos 및 인증서 기반 인증은 지원되지 않습니다.

프록시 변경 사항

프록시 구성은 세션 생성 시 한 번 설정됩니다. 런타임 시 구성 변경은 지원되지 않습니다. 프록시 설정을 변경할 새 세션을 생성합니다.

프록시 교체

IP 순환 또는 로드 배포를 위한 자동 프록시 교체는 지원되지 않습니다. 프록시를 교체할 새 세션을 생성합니다.

연결 검증

프록시 연결은 세션 생성 시 검증되지 않습니다. 연결 오류는 런타임에 나타납니다.