저장된 시크릿을 샌드박스로 가져오기
저장된 시크릿을 샌드박스로 가져오기
실제 자격 증명을 명령 인자나 소스 파일에 넣지 않고 에이전트에 제공자 접근을 부여해 봐요. 자격 증명을 한 번 저장한 뒤 각 샌드박스를 만들 때 그 시크릿 이름을 첨부하세요.
출처: 문서
본문
인증된 클라이언트로 시작하세요. 제공자에게서 제공자 자격 증명을 얻고 애플리케이션의 시크릿 매니저에서 읽어요. Claude Code의 경우 Anthropic API 키와 서비스 유형 anthropic을 사용하세요. Docker 로그인 토큰은 Anthropic 키가 아니에요.
제공자 자격 증명 저장
표시 이름, 서비스 유형, 토큰 값, 멱등성 키를 제공하세요. 반환된 시크릿 이름을 저장하세요. 응답은 메타데이터를 담지, 저장된 토큰은 절대 담지 않아요.
워크로드의 제공자와 일치하는 서비스 유형을 선택하세요. 한 제공자의 토큰은 다른 에이전트를 인증하지 않아요.
핵심 코드:
return client.secrets.create(
{ displayName: name, serviceType, token: { value: token } },
{ idempotencyKey: requestId },
);
완전한 TypeScript 예시: credinject/store.ts
import type { Sandboxes } from '@docker/sandboxes';
export async function storeSecret(
client: Sandboxes,
name: string,
serviceType: string,
token: string,
requestId: string,
) {
return client.secrets.create(
{ displayName: name, serviceType, token: { value: token } },
{ idempotencyKey: requestId },
);
}
생성 시 시크릿 첨부
샌드박스의 스토리지 옵션에 시크릿 이름을 넣어요. 이 예시는 관리되는 이미지를 사용해요. 같은 스토리지 옵션을 이름 지정된 키트 실행 시에도 전달할 수 있어요.
에이전트를 시작하기 전에 샌드박스를 만들 때 시크릿을 첨부하세요. 시크릿의 표시 이름 대신 리소스 이름을 전달하면 선택되지 않아요. 실제 토큰을 환경 변수에 중복하는 대신 스토리지 단계의 클라이언트 쪽에 두세요.
예시가 샌드박스가 실행될 때까지 기다린 뒤 SDK가 핸들을 반환해요. 그 핸들로 에이전트를 실행하세요. 자격 증명을 나중에 교체하거나 삭제하려면 클라우드 시크릿 관리 문서를 따르세요.
핵심 코드:
const sandbox = await client.create(
{ displayName: name, image, storage: { secrets: secretNames } },
{ timeoutMs: 300_000, idempotencyKey: requestId },
);
return sandbox.waitUntilRunning();
완전한 TypeScript 예시: credinject/attach.ts
import type { Sandboxes } from '@docker/sandboxes';
export async function createWithSecrets(
client: Sandboxes,
name: string,
image: string,
secretNames: string[],
requestId: string,
) {
const sandbox = await client.create(
{ displayName: name, image, storage: { secrets: secretNames } },
{ timeoutMs: 300_000, idempotencyKey: requestId },
);
return sandbox.waitUntilRunning();
}