Корпоративные клиенты имеют несколько бизнес-направлений (LOB), а также групп и команд внутри них. Этим клиентам необходимо сбалансировать управление, безопасность и соответствие требованиям с потребностью в командах машинного обучения (ML), чтобы быстро получить безопасный доступ к своим средам обработки данных. Эти корпоративные клиенты, которые начинают внедрять AWS, расширяют свое присутствие на AWS или планируют усовершенствовать существующую среду AWS, должны убедиться, что у них есть прочная основа для их облачной среды. Одним из важных аспектов этой основы является организация среды AWS в соответствии со стратегией работы с несколькими учетными записями.
В сообщении Защита предварительно подписанных URL-адресов Amazon SageMaker Studio. Часть 2. Частный API с аутентификацией JWT, мы продемонстрировали, как создать частный API для создания Студия Amazon SageMaker предварительно подписанные URL-адреса, которые доступны только прошедшему проверку подлинности конечному пользователю в корпоративной сети из одной учетной записи. В этом посте мы покажем, как вы можете расширить эту архитектуру на несколько учетных записей для поддержки нескольких бизнес-объектов. Мы демонстрируем, как вы можете использовать предварительно подписанные URL-адреса Studio в среде с несколькими учетными записями для защиты и маршрутизации доступа от разных пользователей к их соответствующему домену Studio. Мы объясняем процесс и сетевой поток, а также то, как легко масштабировать эту архитектуру для нескольких учетных записей и Создатель мудреца Амазонки домены. Предлагаемое решение также гарантирует, что весь сетевой трафик остается в частной сети AWS, а связь осуществляется безопасным способом.
Хотя мы демонстрируем использование двух разных бизнес-объектов, каждый из которых имеет отдельную учетную запись AWS, это решение можно масштабировать до нескольких бизнес-объектов. Мы также представляем логическую конструкцию учетной записи общих служб, которая играет ключевую роль в управлении, администрировании и оркестровке.
Обзор решения
Мы можем обеспечить связь между VPC SageMaker всех LOB и VPC учетной записи общих служб, используя либо пиринг VPC, либо Транзитный шлюз AWS. В этом посте мы используем транзитный шлюз, поскольку он обеспечивает более простой механизм связи между VPC и VPC через пиринг VPC, когда задействовано большое количество VPC. Мы также используем Amazon Route 53 правила переадресации в сочетании с преобразователями входящего и исходящего трафика для разрешения всех DNS-запросов к конечным точкам VPC общей учетной записи службы. Сетевая архитектура была разработана с использованием следующих шаблонов:
Давайте рассмотрим два основных компонента архитектуры, информационный поток и сетевой поток, более подробно.
Поток информации
Следующая диаграмма иллюстрирует архитектуру информационного потока.
Этапы рабочего процесса следующие:
- Пользователь аутентифицируется с помощью Амазон Когнито пользовательский пул и получает токен для использования API доступа Studio.
- Пользователь вызывает API для доступа к Studio и включает токен в запрос.
- Когда этот API вызывается, пользовательское AWS Lambda авторизатор запускается для проверки токена с помощью поставщика удостоверений (IdP) и возвращает пользователю соответствующие разрешения.
- После авторизации вызова запускается функция Lambda.
- Эта функция Lambda использует имя пользователя для получения имени LOB и учетной записи LOB из следующих Amazon DynamoDB таблицы, в которых хранятся эти отношения:
- Таблица пользователей – Эта таблица содержит отношения между пользователями и их LOB.
- Таблица больших объектов – Эта таблица содержит отношения между LOB и учетной записью AWS, в которой существует домен SageMaker для этого LOB.
- С идентификатором учетной записи функция Lambda принимает роль PresignedUrlGenerator в этой учетной записи (каждая учетная запись LOB имеет роль PresignedURLGenerator, которую может взять на себя только функция Lambda, отвечающая за создание предварительно подписанных URL-адресов).
- Наконец, функция вызывает API-вызов SageMaker create-presigned-domain-url для этого пользователя в домене SageMaker LOB.
- Предварительно подписанный URL-адрес возвращается конечному пользователю, который использует его через конечную точку Studio VPC.
Шаги 1–4 более подробно описаны в Часть 2 из этой серии, где мы объясняем, как работает пользовательский авторизатор Lambda и обеспечивает процесс авторизации в API-шлюзе доступа.
Сетевой поток
Весь сетевой трафик проходит безопасным и конфиденциальным образом с использованием Приватная ссылка AWS, как показано на следующей диаграмме.
Эти шаги заключаются в следующем:
- Когда пользователь вызывает API доступа, это происходит через конечную точку VPC для Шлюз API Amazon в сетевом VPC в учетной записи общих служб. Этот API настроен как частный и имеет политику, которая разрешает его использование только через эту конечную точку VPC, как описано в разделе Часть 2 из этой серии.
- Весь процесс авторизации происходит в частном порядке между API Gateway, Lambda и Amazon Cognito.
- После предоставления авторизации шлюз API запускает функцию Lambda, отвечающую за создание предварительно подписанных URL-адресов с использованием частной сети AWS.
- Затем, поскольку функция маршрутизации Lambda находится в облаке VPC, все вызовы к различным службам происходят через соответствующие конечные точки VPC в учетной записи общих служб. Функция выполняет следующие действия:
- Получите учетные данные для принятия роли через Сервис токенов безопасности AWS (AWS STS) Конечная точка VPC в сетевой учетной записи.
- Вызовите DynamoDB, чтобы получить информацию о пользователях и больших объектах через конечную точку DynamoDB VPC.
- Вызовите SageMaker API, чтобы создать предварительно подписанный URL-адрес для пользователя в его домене SageMaker через конечную точку SageMaker API VPC.
- Наконец, пользователь использует предварительно подписанный URL-адрес через конечную точку Studio VPC в сетевом VPC в учетной записи общих служб, поскольку эта конечная точка VPC была указана при создании предварительно подписанного URL-адреса.
- Вся дальнейшая связь между сервисами Studio и AWS осуществляется через ENI Studio внутри VPC SageMaker учетной записи LOB. Например, чтобы разрешить SageMaker вызывать Реестр Amazon Elastic Container (Amazon ECR), конечная точка VPC интерфейса Amazon ECR может быть предоставлена в учетной записи общих служб VPC, а правило переадресации используется совместно с учетными записями SageMaker, которые должны его использовать. Это позволяет разрешать запросы SageMaker к Amazon ECR на эту конечную точку, а маршрутизация Transit Gateway сделает все остальное.
Предпосылки
Для представления среды с несколькими учетными записями мы используем одну учетную запись общих служб и два разных LOB:
- Учетная запись общих служб – Где работают конечные точки VPC и API шлюза доступа Studio.
- Учетная запись SageMaker LOB A – Учетная запись для домена SageMaker для LOB A
- Учетная запись SageMaker LOB B – Учетная запись для домена SageMaker для LOB B
Для получения дополнительной информации о том, как создать учетную запись AWS, см. Как создать и активировать новую учетную запись AWS.
Учетные записи LOB — это логические сущности, относящиеся к бизнесу, отделу или домену. Мы предполагаем одну учетную запись на логический объект. Однако для каждой среды (разработка, тестирование, производство) будут разные учетные записи. Для каждой среды у вас обычно есть отдельная учетная запись общих служб (в зависимости от требований соответствия), чтобы ограничить радиус поражения.
Вы можете использовать шаблоны и инструкции в Репозиторий GitHub создать необходимую инфраструктуру. Этот репозиторий состоит из папок для разных учетных записей и разных частей решения.
Настройка инфраструктуры
Для крупных компаний с большим количеством доменов Studio также рекомендуется иметь централизованную архитектуру конечных точек. Это может привести к экономии средств по мере масштабирования архитектуры и создания большего количества доменов и учетных записей. Шаблон networking.yml в учетной записи общих служб развертывает конечные точки VPC и необходимые ресурсы Route 53, а также инфраструктуру Transit Gateway для масштабирования предлагаемого решения.
Подробные инструкции по развертыванию можно найти в файле README.md в репозитории GitHub. Полное развертывание включает следующие ресурсы:
- Две AWS CloudFormation шаблоны в учетной записи общих служб: один для сетевой инфраструктуры и один для Модель безсерверного приложения AWS (AWS SAM) API шлюза доступа к Studio
- Один шаблон CloudFormation для инфраструктуры в учетной записи SageMaker LOB A
- Один шаблон CloudFormation для инфраструктуры учетной записи SageMaker LOB B
- При необходимости можно развернуть локальный симулятор в учетной записи общих служб для тестирования сквозного развертывания.
После того, как все будет развернуто, перейдите к консоли Transit Gateway для каждой учетной записи SageMaker (LOB-учетные записи) и убедитесь, что транзитный шлюз был правильно предоставлен в общий доступ и VPC связаны с ним.
При желании, если какие-либо правила переадресации были переданы учетным записям, их можно связать с VPC учетных записей SageMaker. Основные правила, обеспечивающие работу решения для централизованных конечных точек VPC, автоматически передаются учетной записи LOB во время развертывания. Для получения дополнительной информации об этом подходе см. Централизованный доступ к частным конечным точкам VPC.
Заполните данные
Запустите следующий скрипт, чтобы заполнить таблицы DynamoDB и пул пользователей Amazon Cognito необходимой информацией:
Сценарий выполняет необходимые вызовы API, используя Интерфейс командной строки AWS (AWS CLI) и ранее настроенные параметры и профили.
Пользователи Amazon Cognito
Этот шаг работает так же, как Часть 2 из этой серии, но должен выполняться для пользователей во всех LOB и должен соответствовать их пользовательскому профилю в SageMaker, независимо от того, к какому LOB они принадлежат. Для этого поста у нас есть один пользователь в домене Studio в LOB A (user-lob-a) и один пользователь в домене Studio в LOB B (user-lob-b). В следующей таблице перечислены пользователи, входящие в пул пользователей Amazon Cognito.
Информация о пользователе | Пароль |
пользователь-лоб-а | ПользовательLobA1! |
пользователь-лоб-б | ПользовательLobB1! |
Обратите внимание, что эти пароли были настроены для демонстрационных целей.
Таблицы DynamoDB
Приложение доступа использует две таблицы DynamoDB для направления запросов от разных пользователей в домен Studio их бизнес-объектов.
Таблица пользователей содержит отношения между пользователями и их бизнес-объектами.
Основной ключ | LOB |
пользователь-лоб-а | лоб-а |
пользователь-лоб-б | лоб-б |
Таблица LOB содержит связь между LOB и учетной записью AWS, в которой существует домен SageMaker для этого LOB.
LOB | АККАУНТ_ID |
лоб-а | <YOUR_LOB_A_ACCOUNT_ID> |
лоб-б | <YOUR_LOB_B_ACCOUNT_ID> |
Обратите внимание, что эти имена пользователей должны совпадать в профилях пользователей Studio и с именами пользователей, ранее добавленных в пул пользователей Amazon Cognito.
Протестируйте развертывание
На этом этапе мы можем протестировать развертывание, идущее к шлюзу API, и проверить, что API отвечает для любого из пользователей. Мы получаем предварительно подписанный URL в ответе; однако использование этого URL-адреса в браузере приведет к ошибке токена аутентификации.
Для этой демонстрации мы настроили смоделированную локальную среду с хостом-бастионом и приложением Windows. Мы устанавливаем Firefox в экземпляр Windows и используем инструменты разработки, чтобы добавить заголовки авторизации в наши запросы и протестировать решение. Более подробная информация о том, как настроить симулированную локальную среду, доступна в соответствующем репозитории GitHub.
На следующей диаграмме показана наша тестовая архитектура.
У нас есть два пользователя, один для LOB A (пользователь A), а другой для LOB B (пользователь B), и мы показываем, как изменяется домен Studio, просто изменяя ключ авторизации, полученный из Amazon Cognito, при входе в систему как пользователь A и пользователь. Б.
Выполните следующие шаги, чтобы протестировать развертывание:
- Получите токен сеанса для пользователя A, как показано на Часть 2 серии, а также в инструкциях в репозитории GitHub.
Мы используем следующий пример команды для получения учетных данных пользователя из Amazon Cognito:
- Для этой демонстрации мы используем смоделированное локальное приложение Windows. Чтобы подключиться к экземпляру Windows, вы можете следовать тому же подходу, который указан в Безопасный доступ к Amazon SageMaker Studio с помощью AWS SSO и приложения SAML.
- Firefox должен быть установлен в экземпляре. Если нет, однажды в экземпляре мы можем установить Firefox.
- Откройте Firefox и попробуйте получить доступ к API Studio с помощью
user-lob-a
oruser-lob-b
в качестве параметра пути API.
Вы получаете неавторизованное сообщение.
- Откройте инструменты разработчика Firefox и на Cеть вкладку, выберите (щелкните правой кнопкой мыши) предыдущий вызов API и выберите Редактировать и повторно отправить.
- Здесь мы добавляем токен в качестве заголовка авторизации в инструменты разработчика Firefox и снова делаем запрос к Studio Access Gateway API.
На этот раз мы видим в инструментах разработчика, что URL-адрес возвращается вместе с перенаправлением 302.
- Хотя перенаправление не будет работать при использовании инструментов разработчика, вы все равно можете выбрать его для доступа к домену LOB SageMaker для этого пользователя.
- Повторите для пользователя Б с соответствующим токеном и убедитесь, что он перенаправляется на другой домен Studio.
Если вы выполните эти шаги правильно, вы сможете получить доступ к обоим доменам одновременно.
В нашем локальном приложении Windows мы можем использовать оба домена через конечную точку Studio VPC через наше пиринговое соединение VPC.
Давайте рассмотрим некоторые другие сценарии тестирования.
Если еще раз отредактировать API и изменить путь на противоположный LOB, при повторной отправке получим ошибку в ответе API: запрещенный ответ от API Gateway.
Попытка получить возвращенный URL-адрес для правильного пользователя и использовать его в браузере вашего ноутбука также не удастся, поскольку он не будет использоваться через внутреннюю конечную точку Studio VPC. Это та же ошибка, которую мы видели при тестировании с помощью API Gateway. Он возвращает ошибку «Токен аутентификации, содержащий недостаточные разрешения».
Слишком долгое использование предварительно подписанного URL-адреса приведет к ошибке «Недействительный или просроченный токен аутентификации».
Масштабировать домены
Всякий раз, когда добавляется новый домен SageMaker, необходимо выполнить следующие действия по подключению к сети и доступу:
- Поделитесь транзитным шлюзом с новой учетной записью, используя Диспетчер доступа к ресурсам AWS (ОЗУ AWS).
- Прикрепите VPC к транзитному шлюзу в LOB-аккаунте (это делается в AWS CloudFormation).
В нашем сценарии транзитный шлюз был настроен с автоматической ассоциацией с таблицей маршрутов по умолчанию и включенным автоматическим распространением. В реальном случае вам может потребоваться выполнить три дополнительных шага:
- В учетной записи общих служб свяжите подключенный Studio VPC с соответствующей таблицей маршрутов Transit Gateway для доменов SageMaker.
- Распространите связанные маршруты VPC на Transit Gateway.
- Наконец, добавьте идентификатор учетной записи вместе с именем большого объекта в таблицу DynamoDB больших объектов.
Убирать
Выполните следующие шаги, чтобы очистить ресурсы:
- Удалите пиринговое соединение VPC.
- Удалите связанные VPC из частных размещенных зон.
- Удалите шаблон локального симулятора из учетной записи общих служб.
- Удалите шаблоны Studio CloudFormation из учетных записей SageMaker.
- Удалите шаблон доступа CloudFormation из учетной записи общих служб.
- Удалите сетевой шаблон CloudFormation из учетной записи общих служб.
Заключение
В этом посте мы рассмотрели, как настроить частный API-доступ к Studio с несколькими учетными записями. Мы объяснили, как происходят сетевые потоки и потоки приложений, а также как вы можете легко масштабировать эту архитектуру для нескольких учетных записей и доменов SageMaker. Направляйтесь к Репозиторий GitHub чтобы начать свое путешествие. Мы будем рады услышать ваши отзывы!
Об авторах
Нилам Кошия является архитектором корпоративных решений в AWS. В настоящее время она занимается оказанием помощи корпоративным клиентам в их переходе на облачные технологии для достижения стратегических бизнес-результатов. В свободное время она любит читать и проводить время на свежем воздухе.
Альберто Менендес является младшим консультантом по DevOps в сфере профессиональных услуг в AWS. Он помогает ускорить переход клиентов к облаку. В свободное время он любит заниматься спортом, особенно баскетболом и падел-теннисом, проводить время с семьей и друзьями и изучать технологии.
Раджеш Рамчандер является старшим инженером по данным и машинному обучению в сфере профессиональных услуг в AWS. Он помогает клиентам перенести большие данные и рабочие нагрузки AL/ML в AWS.
Рам Виттал является архитектором решений для машинного обучения в AWS. Он имеет более чем 20-летний опыт проектирования и создания распределенных, гибридных и облачных приложений. Он увлечен созданием безопасных и масштабируемых решений AI/ML и больших данных, чтобы помочь корпоративным клиентам в их переходе на облачные технологии и их оптимизации для улучшения их бизнес-результатов. В свободное время увлекается теннисом и фотографией.
- SEO-контент и PR-распределение. Получите усиление сегодня.
- Платоблокчейн. Интеллект метавселенной Web3. Расширение знаний. Доступ здесь.
- Чеканка будущего с Эдриенн Эшли. Доступ здесь.
- Источник: https://aws.amazon.com/blogs/machine-learning/secure-amazon-sagemaker-studio-presigned-urls-part-3-multi-account-private-api-access-to-studio/
- :является
- $UP
- 20 лет
- 7
- 8
- 9
- a
- О нас
- ускорять
- доступ
- доступной
- Учетная запись
- Учетные записи
- Достигать
- через
- действия
- добавленный
- дополнительный
- администрация
- принять
- Принятие
- против
- AI / ML
- Все
- позволяет
- Amazon
- Амазон Когнито
- Создатель мудреца Амазонки
- Студия Amazon SageMaker
- и
- Другой
- API
- Доступ к API
- Применение
- Приложения
- подхода
- соответствующий
- архитектура
- МЫ
- AS
- внешний вид
- Юрист
- связанный
- Объединение
- предполагается,
- At
- Auth
- подлинности
- проверяет подлинность
- разрешение
- Автоматический
- автоматически
- доступен
- AWS
- AWS CloudFormation
- Баланс
- основанный
- основной
- Баскетбол
- BE
- , так как:
- начинать
- не являетесь
- между
- большой
- Big Data
- браузер
- строить
- Строительство
- бизнес
- бизнес
- by
- призывают
- Объявления
- CAN
- заботится
- случаев
- централизованная
- изменение
- изменения
- изменения
- заряд
- проверка
- Выберите
- облако
- принятие облака
- сочетание
- Связь
- Связь
- Компании
- полный
- Соответствие закону
- компоненты
- подтвердить
- Свяжитесь
- связи
- последовательный
- Консоли
- строить
- консультант
- потреблять
- потребленный
- потребление
- Container
- Корпоративное
- соответствующий
- Цена
- экономия на издержках
- покрытый
- Создайте
- создали
- создание
- Полномочия
- Текущий
- изготовленный на заказ
- Клиенты
- данным
- наука о данных
- По умолчанию
- демонстрировать
- убивают
- Кафедра
- развернуть
- развертывание
- развертывает
- описано
- предназначенный
- подробность
- подробный
- Дев
- Застройщик
- Развитие
- различный
- направлять
- распределенный
- DNS
- домен
- доменов
- в течение
- каждый
- легко
- или
- включен
- впритык
- Конечная точка
- инженер
- обеспечивать
- обеспечивает
- Предприятие
- лиц
- организация
- Окружающая среда
- средах
- ошибка
- особенно
- установленный
- многое
- пример
- существует
- расширяющийся
- опыт
- Объяснять
- объяснены
- Больше
- продлить
- FAIL
- семья
- Файл
- в заключение
- Firefox
- поток
- Потоки
- Фокус
- следовать
- после
- следующим образом
- след
- Что касается
- найденный
- Год основания
- Бесплатно
- друзья
- от
- полный
- функция
- далее
- шлюз
- порождать
- порождающий
- получить
- GitHub
- Дайте
- будет
- управление
- предоставленный
- Группы
- происходить
- происходит
- Есть
- Заголовки
- слышать
- помощь
- помощь
- помогает
- имеет
- кашель
- состоялся
- Как
- How To
- Однако
- HTML
- HTTP
- HTTPS
- Гибридный
- i
- ID
- Личность
- важную
- важный аспект
- улучшать
- in
- включает в себя
- информация
- Инфраструктура
- устанавливать
- установлен
- пример
- инструкции
- Интерфейс
- в нашей внутренней среде,
- вводить
- Запускает
- вовлеченный
- IT
- ЕГО
- путешествие
- Путешествия
- JPG
- JWT
- Основные
- большой
- изучение
- линия
- линий
- Списки
- Живет
- логический
- Длинное
- посмотреть
- любят
- машина
- обучение с помощью машины
- Главная
- сделать
- способ
- многих
- Совпадение
- Май..
- механизм
- сообщение
- мигрировать
- ML
- БОЛЕЕ
- с разными
- имя
- имена
- Откройте
- Необходимость
- сеть
- сетевой трафик
- сетей
- Новые
- номер
- of
- on
- ONE
- противоположность
- оптимизация
- оркестровка
- Другое
- на открытом воздухе
- параметр
- параметры
- часть
- части
- страстный
- пароли
- путь
- паттеранами
- Выполнять
- выполняет
- Разрешения
- фотография
- Платон
- Платон Интеллектуальные данные
- ПлатонДанные
- игры
- Точка
- политика
- бассейн
- населенный
- После
- предыдущий
- предварительно
- частная
- процесс
- Производство
- профессиональный
- Профиль
- Профили
- правильный
- предложило
- Недвижимости
- приводит
- целей
- Запросы
- быстро
- Оперативная память
- Reading
- реальный мир
- получает
- переориентировать
- Несмотря на
- отношения
- Отношения
- хранилище
- представлять
- запросить
- Запросы
- обязательный
- Требования
- решен
- ресурс
- Полезные ресурсы
- те
- ответ
- ОТДЫХ
- ограничивать
- результат
- Возвращает
- Щелкните правой кнопкой мыши
- Роли
- дорога
- маршруты
- Правило
- условиями,
- sagemaker
- Сэм
- то же
- экономия
- масштабируемые
- Шкала
- Весы
- сценарий
- Сценарии
- Наука
- безопасный
- безопасность
- маркер безопасности
- старший
- отдельный
- Серии
- Serverless
- обслуживание
- Услуги
- Сессия
- набор
- общие
- должен
- показывать
- показанный
- Шоу
- имитатор
- одинарной
- Решение
- Решения
- некоторые
- конкретный
- указанный
- Расходы
- Спорт
- Начало
- Шаг
- Шаги
- По-прежнему
- магазин
- Стратегический
- стратегический бизнес
- Стратегия
- сильный
- структурированный
- студия
- поддержка
- ТАБЛИЦЫ
- взять
- принимает
- команды
- Технологии
- шаблон
- шаблоны
- тестXNUMX
- Тестирование
- который
- Ассоциация
- информация
- их
- Их
- Эти
- три
- Через
- время
- в
- знак
- слишком
- инструменты
- трафик
- транзит
- срабатывает
- типично
- URL
- использование
- прецедент
- Информация о пользователе
- пользователей
- VALIDATE
- с помощью
- ходил
- Путь..
- ЧТО Ж
- Что
- , которые
- КТО
- будете
- окна
- в
- Работа
- работает
- лет
- Ты
- ВАШЕ
- зефирнет
- зоны