управлять доступом к кластеру dataproc с помощью служебной учетной записи и ролей IAM

Я новичок в облаке и хотел бы ограничить свои dataproc cluster доступ к заданному gcs buckets в моем проекте.

Допустим, я создал service account названный как 'data-proc-service-account@my-cloud-project.iam.gserviceaccount.com'а затем я создаю кластер dataproc и назначаю ему учетную запись службы.

Теперь я создал два ведра gcs с именем

'gs://my-test-bucket/spark-input-files/'
'gs://my-test-bucket/spark-output-files/'

Эти сегменты содержат некоторые входные файлы, к которым должны получать доступ искровые задания, запущенные в моем кластере dataproc, а также выступают в качестве места, в которое мои искровые задания могут записывать некоторые выходные файлы.

Я думаю, что мне нужно пойти и отредактировать свое разрешение на ведро, как показано в данной ссылке.Изменить разрешение сегмента

Я хочу, чтобы мои искровые задания могли читать файлы только из этой конкретной корзины 'gs://my-test-bucket/spark-input-files/'. и если они пишут в ведро gcs, они могут писать только в''gs://my-test-bucket/spark-output-files/'

Вопрос вот такой: (скорее всего вопрос, связанный с ресурсом SRE)

Какие все разрешения IAM необходимо добавить в мою учетную запись службы обработки данныхdata-proc-service-account@my-cloud-project.iam.gserviceaccount.com на IAM страница консоли.

и какие все разрешения на чтение / запись должны быть добавлены для определенных сегментов, которые, как я считаю, должны быть настроены путем добавления участника и назначения ему правильного разрешения. (как показано в указанной выше ссылке)

Нужно ли мне добавлять свою учетную запись службы обработки данных в качестве участника и могу ли я добавить эти две роли ниже. это сработает?

Storage Object Creator  for bucket 'gs://my-test-bucket/spark-output-files/
Storage Object Viewer   for bucket 'gs://my-test-bucket/spark-input-files/'

Также дайте мне знать, если я что-то пропустил или можно сделать что-то получше.

1 ответ

Решение

Согласно документу Dataproc IAM:

To create a cluster with a user-specified service account, the specified service
account must have all permissions granted by the Dataproc Worker role. Additional
roles may be required depending on configured features.

В dataproc.worker роль имеет список разрешений, связанных с GCS, включая такие вещи, как storage.objects.get а также storage.objects.create. И это применимо к любым ведрам.

Что вы хотите сделать, так это предоставить своей учетной записи службы почти идентичные разрешения для dataproc.worker роль, но ограничить все storage.xxx.xxxразрешения для промежуточного сегмента Dataproc. Затем, кроме того, добавьте доступ на запись к вашей выходной корзине и доступ для чтения к вашей входной корзине.

Или вы можете использовать учетную запись службы, отличную от учетной записи службы Dataproc, при запуске задания Spark. Этой учетной записи службы для конкретного задания потребуется только доступ для чтения к входному сегменту и доступ на запись к выходному сегменту. Предполагая, что вы используете соединитель GCS (который предварительно установлен на кластерах Dataproc) для доступа к GCS, вы можете следовать инструкциям, приведенным здесь. Но в этом случае вам придется распределить ключ учетной записи службы по рабочим узлам или поместить его в GCS/HDFS.