기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AI 코딩 에이전트에서 보안 암호를 안전하게 사용
AI 코딩 에이전트는 쉘 또는AWS API 액세스 권한이 있는 경우 컨텍스트 창에서 일반 텍스트 암호를 호출get-secret-value하고 수신할 수 있습니다. 이로 인해 여러 위험이 발생합니다. 보안 암호 값은 대화 기록, 로그 또는 다운스트림 도구 호출로 유출될 수 있습니다.
이를 방지하려면 Agent Toolkit for AWS
중요
이는 보안 경계가 아닌 최선의 방어입니다. 가장 일반적인 누출 경로를 방지하지만 모든 회피 벡터를 중지할 수는 없습니다. IAM 최소 권한, CloudTrail 모니터링 및 VPC 엔드포인트 정책과 결합합니다.
작동 방식
보안 암호 안전 기술은 두 가지 보호 계층을 제공합니다.
-
스킬 지침 - 런타임 시 참조를 확인하는 래퍼 스크립트
asm-exec인를 사용하여{{resolve:secretsmanager:...}}동적 참조를 사용하도록 에이전트를 티치합니다. 일반 텍스트 값은 하위 프로세스에만 존재하며 에이전트의 컨텍스트 창에 절대 들어가지 않습니다. -
구조 적용(후크) -
PreToolUse후크는 SDK AWS CLI, MCP 도구를batch-get-secret-value통해get-secret-value또는를 호출하거나AWS워크로드 자격 증명 공급자 데몬에 직접 액세스하려는 모든 시도를 자동으로 차단합니다. 수동 구성은 필요하지 않습니다.
사전 조건
Claude Code
또는 OpenAI Codex 와 같은 플러그인을 지원하는 AI 코딩 에이전트입니다. aws-core플러그인용 에이전트 도구 키트AWS가 설치되었습니다. 다음 보안 암호 확인 백엔드 중 하나:
에서 실행되는 AWS워크로드 자격 증명 공급자입니다
localhost:2773. AWS워크로드 자격 증명 공급자 사용을(를) 참조하세요.AWS MCP 엔드포인트에 대한 요청에 서명할 수 있는 AWS자격 증명입니다.
IAM 권한: 확인하려는 보안 암호에
secretsmanager:GetSecretValue대한 권한입니다.
플러그인 설치
에이전트 플랫폼용 aws-core 플러그인을 설치합니다. 보안 암호 안전 기술과 후크가 자동으로 활성화됩니다.
Claude 코드의 경우:
claude plugin add ./plugins/aws-core
OpenAI Codex의 경우:
codex plugin add ./plugins/aws-core
지원되는 다른 플랫폼은 README용AWS에이전트 툴킷
{{resolve:...}} 구문
에이전트가 명령에 암호를 전달해야 하는 경우를 호출하는 대신 동적 참조를 사용합니다get-secret-value.
{{resolve:secretsmanager:<secret-id>:<field-type>:<json-key>:<version-stage>}}
| 구성 요소 | 필수 | 기본값 | 설명 |
|---|---|---|---|
secret-id |
예 | – | 보안 암호 이름 또는 전체 ARN |
field-type |
아니요 | SecretString |
SecretString이어야 합니다. |
json-key |
아니요 | (전체 값) | JSON 보안 암호 값에서 추출할 키 |
version-stage |
아니요 | AWSCURRENT |
버전 단계 레이블 |
asm-exec를 사용하여 보안 암호로 명령 실행
asm-exec는 명령 인수의 {{resolve:...}} 참조를 확인한 다음 대상 명령을 실행하는 래퍼 스크립트입니다. 보안 암호 값은 하위 프로세스에만 존재합니다.
asm-exec -- <command> [arguments with {{resolve:...}} references]
asm-exec는 사용 가능한 첫 번째 백엔드를 통해 참조를 확인합니다.
의 AWS워크로드 자격 증명 공급자
localhost:2773- 로컬로 캐시됩니다.AWS MCP 엔드포인트 SigV4-signed 요청입니다.AWS
예 PostgreSQL 데이터베이스에 연결
asm-exec -- psql \ "host=mydb.example.com \ user={{resolve:secretsmanager:prod/db-creds:SecretString:username}} \ password={{resolve:secretsmanager:prod/db-creds:SecretString:password}}" \ -c "SELECT * FROM users LIMIT 10"
예보유자 토큰을 사용하여 API 호출 수행
asm-exec -- curl -H "Authorization: Bearer {{resolve:secretsmanager:prod/api-token}}" \ https://api.example.com/data
예여러 보안 암호를 사용하여 MySQL에 연결
asm-exec -- mysql \ -h {{resolve:secretsmanager:prod/mysql:SecretString:host}} \ -u {{resolve:secretsmanager:prod/mysql:SecretString:username}} \ -p{{resolve:secretsmanager:prod/mysql:SecretString:password}} \ -e "SHOW TABLES"
예보안 암호를 환경 변수로 Docker 컨테이너에 전달
asm-exec -- docker run \ -e "DB_PASSWORD={{resolve:secretsmanager:prod/db:SecretString:password}}" \ myapp:latest
교차 리전 보안 암호
기본 리전과 다른 리전에 저장된 보안 암호의 경우 전체 ARN(리전 포함)을 사용하거나 AWS_REGION 환경 변수를 설정합니다.
# Using full ARN (region is extracted automatically) asm-exec -- curl -H "X-Api-Key: {{resolve:secretsmanager:arn:aws:secretsmanager:eu-west-1:123456789012:secret:prod/key-a1b2c3}}" \ https://eu.api.example.com/data # Using AWS_REGION export AWS_REGION=eu-west-1 asm-exec -- curl -H "X-Api-Key: {{resolve:secretsmanager:prod/key}}" \ https://eu.api.example.com/data
보안 고려 사항
하위 프로세스 격리 - 대상 명령은를 통해 실행됩니다
subprocess.run. 보안 암호 값은asm-exec프로세스 메모리와 하위 프로세스 인수에만 존재합니다.
후크가 직접 보안 암호 액세스를 차단하는 방법
aws-core 플러그인이 활성화되면 PreToolUse 후크가 실행 전에 도구 호출을 가로뜁니다. 다음을 차단합니다.
aws secretsmanager get-secret-valueCLI를batch-get-secret-value통한 및get_secret_value스크립트에서 SDK 호출을batch_get_secret_value통한 및AWS워크로드 자격 증명 공급자 데몬 경로에 직접 액세스(
localhost:2773/secretsmanager/get)GetSecretValueMCP 도구 또는 구조화된AWS API 호출을 통한 작업
통화가 차단되면 에이전트는 {{resolve:...}} 참조를 asm-exec 대신 사용하도록 지시하는 거부 메시지를 수신합니다.
문제 해결
"보안 암호를 찾을 수 없음" 오류
보안 암호가 존재하고 IAM 역할에 secretsmanager:GetSecretValue 권한이 있는지 확인합니다. 보안 암호 이름은 대/소문자를 구분합니다.
AWS워크로드 자격 증명 공급자 연결이 거부됨
AWS워크로드 자격 증명 공급자가 실행되고 있지 않을 수 있습니다. 이는 치명적이지 않습니다.는 SigV4-signed MCP 엔드포인트로 asm-exec 폴스루됩니다. 백엔드가 인증할 수 있도록AWS자격 증명을 사용할 수 있는지 확인합니다.
“해결 실패” 오류
두 백엔드에 모두 연결할 수 없었습니다.AWS워크로드 자격 증명 공급자가 실행 중이거나AWS자격 증명이 유효한지(aws sts get-caller-identity), 보안 암호의 리전이 올바른지, 자격 증명이 보안 암호secretsmanager:GetSecretValue에 있는지 확인합니다.
해결 방법으로 빈 문자열 생성
JSON 키가 보안 암호 값에 존재하지 않을 수 있습니다.AWS콘솔에서 보안 암호 구조를 확인하거나 보안 암호 소유자에게 사용 가능한 키를 확인하도록 요청합니다.
후크가 호출을 차단하지 않음
에이전트 세션 시작 시 후크 로드. 세션 중 플러그인을 설치한 경우 후크가 활성화되도록 에이전트 세션을 다시 시작합니다.