Если вы хотите, чтобы облачная среда ваших специалистов по данным была защищена от утечек данных, удалите эту функцию из SageMaker.

Многие предприятия выбирают облачную среду для поддержки работы своей группы специалистов по обработке и анализу данных. Если вы выбрали AWS SageMaker Studio, эта статья может вас заинтересовать. Наличие как озера данных, так и среды специалиста по данным упрощает их интеграцию. Вы можете выбрать, какие данные может видеть любой специалист по данным. Возможно, вы захотите, чтобы специалист по данным мог использовать эти данные только в среде SageMaker Studio. Однако в SageMaker Studio есть кнопка загрузки, которая позволяет специалистам по данным загружать любые данные, над которыми они работали. После того, как они загрузили данные на свои компьютеры, они могут свободно делиться ими где угодно и с кем угодно.

К счастью, эту кнопку загрузки можно отключить. Недавно отключить кнопку загрузки можно было только в SageMaker Notebooks. Эта статья от Ujjwal Bhardwaj показывает, как отключить его в SageMaker Notebooks.

Но AWS обновил SageMaker Studio и теперь также может отключить кнопку загрузки. Это обновление позволяет нам настроить Studio для использования JupyterLab версии 3. В этой версии JupyterLab провел рефакторинг некоторых функций, включая кнопку загрузки. Теперь эти функции являются подключаемыми модулями, включенными JupyterLab по умолчанию, а не жестко запрограммированными в ядре JupyterLab. Это означает, что теперь эти плагины можно отключить, и они не будут отображаться в пользовательском интерфейсе.

Плагины, которые включают кнопку загрузки в пользовательском интерфейсе JupyterLab, следующие:

  • @jupyterlab/docmanager-extension:download
  • @jupyterlab/filebrowser-extension:download

Есть несколько способов отключить эти плагины. Самый простой способ — запустить эти команды в терминале SageMaker Studio:

conda activate studio
jupyter labextension disable jupyterlab/docmanager-extension:download
jupyter labextension disable @jupyterlab/filebrowser-extension:download
restart-jupyter-server

Вы также можете использовать файлы конфигурации JupyterLab. Отредактируйте файл /opt/conda/envs/studio/etc/jupyter/labconfig/page_config.json со следующим содержимым:

{
  "disabledExtensions": {
    "@jupyterlab/docmanager-extension:download": true,
    "@jupyterlab/filebrowser-extension:download": true
  }
}

и выполните команду:

restart-jupyter-server

Возможно, вам также придется обновить страницу, чтобы увидеть изменения.

Проблема с этими подходами заключается в том, что изменения будут действовать только в течение сеанса. Чтобы сделать изменения постоянными, необходимо создать конфигурацию жизненного цикла студии. Конфигурация жизненного цикла выполнит сценарий при запуске JupyterServer. В этом скрипте вы отредактируете файл из предыдущего примера.

Содержимое скрипта будет:

echo "{" > /opt/conda/envs/studio/etc/jupyter/labconfig/page_config.json
echo "  \\"disabledExtensions\\": {" >> /opt/conda/envs/studio/etc/jupyter/labconfig/page_config.json
echo "    \\"@jupyterlab/docmanager-extension:download\\": true," >> /opt/conda/envs/studio/etc/jupyter/labconfig/page_config.json
echo "    \\"@jupyterlab/filebrowser-extension:download\\": true" >> /opt/conda/envs/studio/etc/jupyter/labconfig/page_config.json
echo "  }" >> /opt/conda/envs/studio/etc/jupyter/labconfig/page_config.json
echo "}" >> /opt/conda/envs/studio/etc/jupyter/labconfig/page_config.json
restart-jupyter-server

Существует множество способов создания конфигурации жизненного цикла. Вы можете сделать это через консоль, с помощью стека Cloudformation или через интерфейс командной строки AWS. Используя CLI, вы можете сделать:

aws sagemaker create-studio-lifecycle-config \
--region <your-region> \
--studio-lifecycle-config-name my-studio-lcc \
--studio-lifecycle-config-content $LCC_CONTENT \
--studio-lifecycle-config-app-type JupyterServer

$LCC_CONTENT — это строка с содержимым сценария, описанного ранее. Затем, когда вы создаете профиль пользователя в домене SageMaker, вы можете привязать к нему конфигурацию жизненного цикла:

aws sagemaker create-user-profile --domain-id <DOMAIN-ID> \ --user-profile-name <USER-PROFILE-NAME> \ --region <REGION> \ --user-settings '{ "JupyterServerAppSettings": {   "LifecycleConfigArns":     ["<LIFECYCLE-CONFIGURATION-ARN-LIST>"]   } }'

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