2016-07-30 3 views
1

Google Cloud Storage에서 Google Compute Engine을 사용하는 방법을 배우면서 ACL 문제가 발생했습니다. 내 자신의 컴퓨터에서 SSH 자격 증명을 사용하여 버킷으로 원하는 모든 것을 할 수 있습니다. 그러나 웹 기반 SSH 클라이언트를 사용하여 계산 인스턴스에 로그인하면 버킷에서만 읽을 수 있습니다. 버킷으로 데이터를 다시 복사하면 'AccessDeniedException : 403 불충분 한 권한'오류가 발생합니다. (나는이 모든 복사 실험을 gsutil로하고있다.)Google Cloud Storage에 대한 액세스 제어 문제를 어떻게 디버그하나요?

이것은 나에게 의미가 없다. 유일하고 유일한 서비스 계정에 프로젝트 편집기 역할이 부여되었으며, 버킷 ACL 목록은 소유자에게 프로젝트 편집기 역할과 서비스 계정 모두에 대한 액세스 권한을 제공함을 확인했습니다. 나는 또한 버킷에서 "OWNER"대신 "WRITE"권한을 갖도록 서비스 계정을 변경하려고 시도했지만 도움이되지 않습니다. 마지막으로, 로컬 컴퓨터에서이 모든 작업을 수행 할 때 동일한 기본 서비스 계정에 대해 다운로드 한 ssh 키를 사용하므로 변경 이유를 알 수 없습니다.

문제의 일부는 고무가 도로를 만나는 곳을 볼 수 없다는 것입니다. 더 이상 정보가없는 403이 나옵니다. 나는 gsutil이 무엇을하는지 볼 수 없다. (사실, gsutil이 자격 증명을 얻는 방법을 모르겠다. 콘솔을 통해 ssh로 로그인 할 때 자동으로 수행되기 때문에 - 나는 서비스 계정 아래에서 로깅한다고 가정하고있다.).

분명히이 직접적인 문제를 해결하고 싶지만, 미래에 발생할 때 이러한 문제를 디버깅하는 방법에 대한 조언을 주시면 감사하겠습니다.

답변

1

나는 당신이 꽤 일반적인 문제에 부딪쳤다 고 생각하지만 잘못 될 수 있으므로 설명하기 전에 꼭 필요한 것이 무엇인지를 설명 할 것입니다.

기본적으로 컴퓨팅 엔진의 gsutil은 개인 사용자 자격 증명을 사용하지 않습니다. 대신 해당 VM에 대해 구성된 서비스 계정 (일반적으로 Compute Engine 기본 서비스 계정)으로 작동하는 자격 증명을 자동으로 가져옵니다.

해당 서비스 계정은 GCS에 글을 쓰려면 두 가지가 필요합니다. 1) GCS에서 특정 위치에 쓰기위한 허가 2. GCS에 쓸 수있는 범위.

서비스 계정을 프로젝트 편집기로 설정하고 문제의 물통 소유자가 된 것 같아서 항목 1을 관리했습니다. 그러나 기본적으로 GCE는 인스턴스는 저장소에 액세스하기위한 읽기 전용 범위입니다. 그게 대부분 독서가 당신을 위해 일하는 이유 일거야,하지만 쓴 것은 그렇지 않아.

실행중인 인스턴스에서 범위를 편집 할 수 없으므로이 문제를 해결하는 것은 약간 성가시다. 따라서 새 GCE 인스턴스를 만들어야하며 그렇게 할 때 명시 적으로 범위를 지정해야합니다. UI를 사용하는 경우 "모든 클라우드 API에 대한 전체 액세스 허용"을 선택하거나 "각 API에 대한 액세스 설정"을 선택하고 저장소에 대해 "읽기 쓰기"또는 "전체"를 선택하십시오. https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances#using

+0

감사 브랜든 :

구글의 사이트에서이 작업을 수행하는 방법에 대한 좋은 지침이 있습니다. GCE 인스턴스의 잘못된 범위가 문제였습니다. 필자는 아무리 많은 문서를 읽었더라도이 보안 모델을 감싸 안을 수는 없다고 말해야합니다. 나는 나를 던지려는 것이 보통 보안은 (1) 행동이 (2) 자원에 대해 (3) 신원에 대해 허용되는지 여부이다. 그러나이 모델에는 (4) "범위"가 있습니다. 범위는 특정 리소스와 관련이 없지만 일반적으로 GCE 인스턴스에서 액세스하는 모든 리소스에 적용됩니다 (1) 및 (3)과 비슷합니다. 그것이 올바른 정신 모델입니까? –

+0

성격. 범위의 배경은 응용 프로그램에 권한을 부여하고 권한을 부여하려는 것이지만 모든 기능을 부여하지 않으려는 것입니다. 제 3 자 GCS 브라우저를 사용하고 싶다고 상상해보십시오.GCS 사용 목적을 위해 귀하의 역할을 할 수있는 권한을 부여 할 수도 있지만 GCS 인스턴스를 시작하거나 이메일을 읽는 것을 의미하지는 않습니다. 액세스를 제한하고 제어하는 ​​또 하나의 방법 일뿐입니다. –

관련 문제