2.3.11.6. Keystone에서 STS Lite를 사용하는 제한 사항 (기술 프리뷰)
Keystone의 제한 사항은 STS 요청을 지원하지 않는다는 것입니다. 페이로드 해시는 요청에 포함되지 않습니다. 이러한 두 가지 제한 사항을 해결하려면 Boto 인증 코드를 수정해야 합니다.
사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터, 버전 3.2 이상.
- 실행 중인 Ceph 오브젝트 게이트웨이.
- Boto Python 모듈, 버전 3 이상 설치.
절차
Boto의
auth.py
파일을 열고 편집합니다.코드 블록에 다음 네 줄을 추가합니다.
class SigV4Auth(BaseSigner): """ Sign a request with Signature V4. """ REQUIRES_REGION = True def __init__(self, credentials, service_name, region_name): self.credentials = credentials # We initialize these value here so the unit tests can have # valid values. But these will get overriden in ``add_auth`` # later for real requests. self._region_name = region_name if service_name == 'sts': 1 self._service_name = 's3' 2 else: 3 self._service_name = service_name 4
다음 두 줄을 코드 블록에 추가합니다.
def _modify_request_before_signing(self, request): if 'Authorization' in request.headers: del request.headers['Authorization'] self._set_necessary_date_headers(request) if self.credentials.token: if 'X-Amz-Security-Token' in request.headers: del request.headers['X-Amz-Security-Token'] request.headers['X-Amz-Security-Token'] = self.credentials.token if not request.context.get('payload_signing_enabled', True): if 'X-Amz-Content-SHA256' in request.headers: del request.headers['X-Amz-Content-SHA256'] request.headers['X-Amz-Content-SHA256'] = UNSIGNED_PAYLOAD 1 else: 2 request.headers['X-Amz-Content-SHA256'] = self.payload(request)
추가 리소스
- Boto Python 모듈 설치에 대한 자세한 내용은 Red Hat Ceph Storage Object Gateway 가이드 의 Test S3 Access 섹션을 참조하십시오.