aws s3 명령어나 Boto3 코드를 실행할 수 있습니다.
작동 방식
샌드박스 게이트웨이는 고정된 CoreWeave 발급자https://oidc.cwsandbox.com를 사용해 각 샌드박스에 JSON Web Token(JWT)을 발급합니다. AI Object Storage는 조직의 워크로드 페더레이션 설정을 기준으로 이 토큰을 검증하고, 토큰의 iss 및 sub 클레임에서 역할 ID를 도출한 다음, 액세스 정책에 따라 범위가 제한된 임시 자격 증명을 반환합니다.
다음 세 가지 설정이 서로 맞아야 합니다.
도출된 역할 ID는
role/https://oidc.cwsandbox.com:user:[USER-ID] 형식이며, 여기서 [USER-ID]는 API 액세스 토큰으로 샌드박스를 시작한 호출자의 CoreWeave 사용자 ID입니다. 주체(subject)가 사용자마다 다르므로, 액세스 정책에서는 각 사용자의 역할을 일일이 나열하거나 끝에 와일드카드를 붙여 해당 발급자의 모든 역할과 일치시켜야 합니다. 자세한 내용은 샌드박스 역할에 권한 부여를 참조하세요.
샌드박스 내부에서는 자격 증명을 가져오는 프로세스를 따로 실행할 필요가 없습니다. AWS SDK의 컨테이너 자격 증명 공급자가 마운트된 토큰을 읽어 CoreWeave 자격 증명 엔드포인트를 호출하고, 자격 증명이 만료되기 전에 자동으로 갱신합니다.
시작하기 전에
Admin이 수행하는 단계에는 다음이 필요합니다.- AI Object Storage가 활성화된 CoreWeave 조직과 하나 이상의 버킷. 버킷을 생성하려면 버킷 생성을 참조하세요.
- 조직의 Admin 권한: IAM Admin 및 Object Storage Admin 역할 또는 이에 상응하는 기존 액세스 권한.
- 샌드박스 WIF 설정을 지정할 수 있는 ID 및 액세스 관리(IAM)의
SANDBOX_ADMIN액션. Cloud Console의 Access Policies 페이지에서 이 권한을 부여하세요. - Cloud Console의 Settings 페이지에 표시되는 CoreWeave 조직 ID.
- CoreWeave API 액세스 토큰. Tokens 페이지에서 생성하고 Token Secret 값을 복사하세요. 자세한 내용은 API 액세스 토큰 관리를 참조하세요.
curl 예시에서 토큰을 읽을 수 있도록 토큰을 환경 변수로 내보내세요. [API-ACCESS-TOKEN]을 CoreWeave API 액세스 토큰으로 바꾸세요.
1단계: OIDC 워크로드 페더레이션 설정 만들기
AI Object Storage가 샌드박스 토큰을 허용하도록 조직에 샌드박스 issuer를 등록하세요.- Cloud Console에서 Workload Federation 페이지로 이동하세요.
- Create OIDC configuration을 클릭하세요.
-
다음 값을 입력하세요.
- Name: 이 설정을 식별하는 이름입니다(예:
coreweave-sandboxes). - Issuer URL:
https://oidc.cwsandbox.com - Client ID (Audience):
https://oidc.cwsandbox.com - Description (선택): 이 설정에 대한 설명입니다.
- Name: 이 설정을 식별하는 이름입니다(예:
- Create를 클릭하세요.
2단계: 샌드박스 역할에 권한 부여
조직 액세스 정책은 샌드박스가 받은 자격 증명으로 수행할 수 있는 작업을 결정합니다. 두 가지 권한 부여가 필요하며, 토큰 교환 액션은 전역으로 적용되는 반면 S3 액션은 버킷으로 범위가 제한되므로 별도의 구문으로 작성해야 합니다. 다음 정책은 토큰 교환 권한을 부여합니다.cwobject:CreateAccessKeyOIDC 액션은 모든 리소스에 적용되므로 해당 구문은 "resources": ["*"]를 사용합니다. [USER-ID]를 샌드박스를 시작하는 API 액세스 토큰의 소유자인 CoreWeave 사용자의 ID로 바꾸세요:
role/https://oidc.cwsandbox.com:*. 발급자 부분은 여전히 정확히 일치해야 하므로, 이 권한 부여는 샌드박스 토큰에만 적용되며 페더레이션한 다른 ID 공급자에는 적용되지 않습니다.
다음으로, 자격 증명에 버킷 작업 권한을 부여하세요. [BUCKET-NAME]을 샌드박스에서 사용하는 버킷으로 바꾸세요:
arn:aws:iam::[ORG-ID]:role/https://oidc.cwsandbox.com:*으로 지정되며, 클레임은 oidc:[ORG-ID]:[CLAIM]이라는 조건 키로 참조됩니다. 샌드박스 토큰에 포함된 클레임은 토큰 클레임을 참조하세요.
3단계: 샌드박스 control plane에 WIF 설정 등록하기
샌드박스 control plane에 토큰 발급 시 기준으로 삼을 워크로드 페더레이션 설정을 지정하고, 조직 내 샌드박스가 요청할 수 있는 권한의 상한을 설정하세요. 설정은 조직당 하나만 존재하며, 이 요청은 멱등성 있는 upsert로 처리됩니다.[WIF-CONFIG-ID]는 1단계에서 확인한 Config ID로, [BUCKET-NAME]은 허용하려는 각 버킷 이름으로 바꾸세요.
Set the sandbox WIF configuration
조직은 인증된 호출자에 따라 결정되므로 요청 본문에는 조직 필드가 없으며, 호출자는 자신의 조직 설정만 관리할 수 있습니다.
설정이 저장되었는지 확인하세요:
Get the sandbox WIF configuration
Delete the sandbox WIF configuration
4단계: 샌드박스를 시작할 때 객체 저장소 액세스 요청
1~3단계는 조직의 Admin이 한 번만 수행하는 설정입니다. 나머지 단계는 연구자가 객체 저장소가 필요한 각 샌드박스에 대해 수행합니다. 객체 저장소 액세스는 샌드박스별로 명시적으로 활성화해야 합니다. 시작 요청에objectStorageAccess를 추가하고, 샌드박스에 필요한 버킷과 권한 수준을 지정하세요. [CONTAINER-IMAGE]를 샌드박스에서 실행할 이미지로 바꾸세요:
Start a sandbox with object storage access
buckets 목록은 allowedBuckets의 부분 집합이어야 하며, permission은 maxPermission을 초과할 수 없습니다. 조직에서 허용하는 범위를 초과하는 요청은 거부되며, 조직에 활성 WIF 설정이 없는 상태에서 이루어진 요청도 거부됩니다.
최대 허용 범위보다 좁은 범위를 요청하는 것이 좋습니다. 트레이닝 데이터를 읽기만 하는 샌드박스는 조직의 최대 허용 권한이 읽기-쓰기인 경우에도 OBJECT_STORAGE_PERMISSION_READ를 요청해야 합니다.
5단계: 샌드박스 내부에서 자격 증명 사용하기
샌드박스가objectStorageAccess로 시작되면 컨트롤 플레인이 OIDC 토큰을 마운트하고, AWS SDK가 컨테이너 자격 증명에 사용하는 환경 변수를 설정합니다.
토큰 자체는
/var/run/secrets/sandbox/storage-token/osa-token에 있는 읽기 전용 파일입니다. 이 토큰을 직접 읽을 필요는 없으며, 샌드박스 외부로 복사하거나 다른 워크로드에 전달해서는 안 됩니다.
자격 증명 교환은 클라이언트 라이브러리가 처리합니다. 버킷의 리전을 설정한 다음 원하는 S3 호환 클라이언트를 사용하세요. [AVAILABILITY-ZONE]을 버킷이 있는 가용 영역(예: US-EAST-04A)으로 바꾸세요.
List objects from inside a sandbox
PathStyleRequestNotAllowed 오류로 실패합니다.
Boto3는 동일한 환경 변수를 사용하므로 자격 증명을 명시적으로 지정할 필요가 없습니다. 다음 예시는 샌드박스 환경에서 엔드포인트와 리전을 조회하여 버킷에 있는 객체 목록을 표시합니다.
list_objects.py
BUCKET_NAME을 액세스 권한을 부여한 버킷으로 설정하고 샌드박스 내에서 실행하세요:
Example output
자격 증명 교환에는 루프백이 아닌 호스트에 대한 컨테이너 자격 증명을 지원하는 SDK가 필요합니다.
awscli 2.33.2 이상 또는 boto3 1.42.5 이상을 사용하세요. 이전 버전에서는 Unsupported host 'api.coreweave.com' 오류가 발생합니다. 이러한 버전을 포함하여 샌드박스 컨테이너 이미지를 구축하세요.Token lifetimes
샌드박스 OIDC token과 이 토큰으로 얻은 임시 credentials는 서로 다른 일정으로 만료됩니다:- Sandbox OIDC token: 기본적으로 1시간이며 최대 12시간까지 설정할 수 있습니다. control plane은 샌드박스가 시작될 때 이를 발급합니다.
- Temporary AI Object Storage credentials: token으로부터 필요 시 발급됩니다. exchange response는
Expirationtimestamp를 포함하며, AWS SDK는 코드의 개입 없이 해당 시간 전에 credentials를 갱신합니다.
maxLifetimeSeconds를 설정하여 token이 샌드박스의 전체 lifetime을 커버하도록 하십시오.
Token claims
샌드박스 object storage 토큰은 다음 claim을 포함합니다. bucket policy 조건에서oidc:[ORG-ID]:[CLAIM]으로 참조하세요.
문제 해결
다음 섹션에서는 샌드박스 객체 저장소 액세스를 설정하거나 사용할 때 가장 흔히 볼 수 있는 실패 사례와 각 경우에 확인해야 할 사항을 설명합니다.start request가 거부됨
objectStorageAccess가 포함된 start request가 실패하면 다음을 확인하세요:
- 조직에
enabled가true로 설정된 WIF 설정이 있어야 합니다. 3단계의 조회 요청으로 조회하세요. - 요청의 모든 버킷이
allowedBuckets에 있거나,allowedBuckets가 비어 있어야 합니다. - 요청된
permission이maxPermission을 초과하지 않아야 합니다.
자격 증명 교환 시 Permission Denied 반환
첫 번째 S3 오퍼레이션이 권한 오류로 실패하면 교환 자체가 거부된 것입니다. 다음 사항을 확인하세요.- 조직 액세스 정책이 별도의 statement에서 샌드박스 role에
"resources": ["*"]에 대한cwobject:CreateAccessKeyOIDC권한을 부여하는지 확인하세요. - 정책 principal이 subject의
user:접두사를 포함하여 파생된 role과 정확히 일치하는지 확인하세요. principal은role/https://oidc.cwsandbox.com:[USER-ID]가 아니라role/https://oidc.cwsandbox.com:user:[USER-ID]여야 합니다. - Cloud Console의 workload federation 설정이 활성 상태이고 issuer URL이 하이픈 없이
https://oidc.cwsandbox.com으로 되어 있는지 확인하세요. - 샌드박스 OIDC token이 만료되지 않았는지 확인하세요. 샌드박스를 다시 시작하면 새 token이 발급됩니다.
Credential exchange는 성공했지만 S3 오퍼레이션이 AccessDenied를 반환합니다
교환이 성공했으며 결과로 생성된 credentials에 버킷 권한이 없습니다. 조직 액세스 정책이 샌드박스 role에 단축 형식 버킷 리소스([BUCKET-NAME] 및 [BUCKET-NAME]/*)에 필요한 s3: 액션을 부여하는지 확인하세요. 버킷 액세스 정책도 적용되는 경우 Deny 문이 있는지 확인하세요. Deny 문은 Allow를 재정의합니다.
사용자 인증 정보 요청 시간 초과
allowlist-only egress가 설정된 정책이 적용되는 샌드박스는https://api.coreweave.com에 연결할 수 있어야 합니다. 이 경로가 없으면 사용자 인증 정보 가져오기 시간이 초과되어 첫 번째 S3 오퍼레이션이 실패합니다. 정책의 egress allowlist에서 해당 호스트에 대한 액세스를 허용하세요. 자세한 내용은 샌드박스 정책 설정을 참조하세요.
워크로드가 많은 액세스 키를 생성하는 경우
교환할 때마다 수명이 짧은 액세스 키가 생성됩니다. 작업 항목마다 새 클라이언트를 생성하는 대신, SDK의 자격 증명 공급자가 프로세스가 실행되는 동안 자격 증명을 캐시하고 갱신하도록 하세요. 요청마다 키를 발급하면 이점 없이 많은 키가 생성됩니다.관련 페이지
- Workload Identity Federation for AI Object Storage: CoreWeave 전반에서 WIF가 작동하는 방식.
- Use Workload Identity Federation with OIDC: 샌드박스 이외의 ID 공급자를 위한 일반 OIDC 페더레이션 가이드.
- Organization access policies: 2단계에서 사용되는 정책 스키마.
- Sandboxes architecture: 샌드박스 요청 경로에서 게이트웨이와 러너가 위치하는 곳.