Мы недавно объявило поддержки Формирование озера AWS детальные политики контроля доступа в Амазонка Афина запросы к данным, хранящимся в любом поддерживаемом формате файлов, с использованием таких форматов таблиц, как Apache Iceberg, Apache Hudi и Apache Hive. AWS Lake Formation позволяет определять и применять политики доступа на уровне базы данных, таблиц и столбцов для запроса таблиц Iceberg, хранящихся в Amazon S3. Lake Formation обеспечивает уровень авторизации и управления данными, хранящимися в Amazon S3. Эта возможность требует обновления до Двигатель Афина версии 3.
В крупных организациях часто есть подразделения, которые автономно управляют своими бизнес-данными. Это делает обмен данными между LoB нетривиальным. Эти организации приняли федеративную модель, при которой каждое подразделение имеет автономию в принятии решений относительно своих данных. Они используют модель издатель/потребитель с уровнем централизованного управления, который используется для обеспечения контроля доступа. Если вы хотите узнать больше об архитектуре сетки данных, посетите Разработка архитектуры сетки данных с использованием AWS Lake Formation и AWS Glue. С версией 3 ядра Athena клиенты могут использовать те же самые детализированные элементы управления для платформ открытых данных, таких как Apache Iceberg, Apache Hudi и Apache Hive.
В этом посте мы подробно рассмотрим вариант использования, когда у вас есть модель производитель/потребитель с включенным общим доступом к данным, обеспечивающим ограниченный доступ к таблице Apache Iceberg, которую потребитель может запрашивать. Мы обсудим фильтрацию столбцов для ограничения определенных строк, фильтрацию для ограничения доступа на уровне столбца, эволюцию схемы и путешествие во времени.
Обзор решения
Чтобы проиллюстрировать функциональность детальных разрешений для таблиц Apache Iceberg с Athena и Lake Formation, мы настроили следующие компоненты:
- В аккаунте производителя:
- An Клей AWS Каталог данных для регистрации схемы таблицы в формате Apache Iceberg.
- Lake Formation для обеспечения детального доступа к учетной записи потребителя
- Афина для проверки данных из аккаунта производителя
- В потребительском аккаунте:
- Диспетчер доступа к ресурсам AWS (AWS RAM) для установления связи между каталогом данных производителя и потребителем.
- Lake Formation для обеспечения детального доступа к учетной записи потребителя
- Афина для проверки данных из аккаунта производителя
Следующая диаграмма иллюстрирует архитектуру.
Предпосылки
Прежде чем приступить к работе, убедитесь, что у вас есть следующее:
Настройка источника данных
В этом разделе мы представляем шаги по настройке источника данных.
Создайте корзину S3 для хранения данных таблицы.
Мы создаем новую корзину S3 для сохранения данных для таблицы:
- На консоли Amazon S3 создать ведро S3 с уникальным именем (для этого сообщения мы используем
iceberg-athena-lakeformation-blog
). - Создайте папку производителя внутри сегмента, чтобы использовать ее для таблицы.
Зарегистрируйте путь S3, хранящий таблицу, с помощью Lake Formation.
Прописываем полный путь S3 в Lake Formation:
- Перейдите к консоли Lake Formation.
- Если вы входите в систему впервые, вам будет предложено создать пользователя-администратора.
- На панели навигации под Зарегистрироваться и принять, выберите Расположение озера данных.
- Выберите Зарегистрировать местонахождениеи укажите путь к корзине S3, который вы создали ранее.
- Выберите
AWSServiceRoleForLakeFormationDataAccess
для роль ИАМ.
Дополнительную информацию о ролях см. Требования к ролям, используемым для регистрации локаций.
Если вы включили шифрование корзины S3, вам необходимо предоставить разрешения Lake Formation на выполнение операций шифрования и дешифрования. Ссылаться на Регистрация зашифрованного местоположения Amazon S3 для руководства.
- Выберите Зарегистрировать местонахождение.
Создайте таблицу Iceberg с помощью Athena
Теперь давайте создадим таблицу, используя Athena и формат Apache Iceberg:
- На консоли Athena выберите Редактор запросов в навигационной панели.
- Если вы используете Athena впервые, в разделе Настройки, выберите Управление и введите расположение корзины S3, которое вы создали ранее (
iceberg-athena-lakeformation-blog/producer
). - Выберите Сохранить.
- В редакторе запросов введите следующий запрос (замените местоположение на корзину S3, которую вы зарегистрировали в Lake Formation). Обратите внимание, что мы используем базу данных по умолчанию, но вы можете использовать любую другую базу данных.
- Выберите Run.
Поделитесь таблицей с потребительской учетной записью
Для иллюстрации функциональности мы реализуем следующие сценарии:
- Предоставить доступ к выбранным столбцам
- Предоставить доступ к выбранным строкам на основе фильтра
Выполните следующие шаги:
- На консоли Lake Formation на панели навигации под Каталог данных, выберите Фильтры данных.
- Выберите Создать новый фильтр.
- Что касается Имя фильтра данных, войти
blog_data_filter
. - Что касается Целевая база данных, войти
lf-demo-db
. - Что касается Целевая таблица, войти
consumer_iceberg
. - Что касается Доступ на уровне столбцов, наведите на Включить столбцы.
- Выберите столбцы, которыми хотите поделиться с потребителем:
country, address, contactfirstname, city, customerid,
иcustomername
. - Что касается Выражение фильтра строк, введите фильтр
country='France'
. - Выберите Создать фильтр.
Теперь давайте предоставим доступ к учетной записи потребителя на consumer_iceberg
таблице.
- На панели навигации выберите таблицы.
- Выберите таблицу Consumer_iceberg и выберите Грант на Действия .
- Выберите Внешние аккаунты.
- Введите идентификатор внешней учетной записи.
- Выберите Именованные ресурсы каталога данных.
- Выберите базу данных и таблицу.
- Что касается Фильтры данных, выберите созданный фильтр данных.
- Что касается Разрешения фильтра данных и Предоставляемые разрешения, наведите на Выберите.
- Выберите Грант.
Настройка потребителя данных
Чтобы настроить потребителя данных, мы принимаем долю ресурса и создаем таблицу, используя AWS RAM и Lake Formation. Выполните следующие шаги:
- Войдите в учетную запись потребителя и перейдите к консоли AWS RAM.
- Под Поделился со мной на панели навигации выберите Ресурсы.
- Выберите долю ресурса.
- Выберите Принять совместное использование ресурса.
- Запишите имя общего ресурса, который будет использоваться на следующих шагах.
- Перейдите к консоли Lake Formation.
- Если вы входите в систему впервые, вам будет предложено создать пользователя-администратора.
- Выберите Databases в области навигации, затем выберите свою базу данных.
- На Действия Меню, выберите Создать ссылку на ресурс.
- Что касается Название ссылки на ресурс, введите название ссылки на ваш ресурс (например,
consumer_iceberg
). - Выберите свою базу данных и общую таблицу.
- Выберите Создавай.
Проверить решение
Теперь мы можем выполнять различные операции с таблицами для проверки детального контроля доступа.
Операция вставки
Давайте вставим данные в consumer_iceberg
таблицу в учетной записи производителя и убедитесь, что фильтрация данных работает должным образом в учетной записи потребителя.
- Войдите в учетную запись продюсера.
- На консоли Athena выберите Редактор запросов в навигационной панели.
- Используйте следующий SQL для записи и вставки данных в таблицу Iceberg. Используйте редактор запросов для запуска одного запроса за раз. Вы можете выделить/выбрать по одному запросу и нажать «Выполнить»/«Выполнить еще раз»:
- Используйте следующий SQL-код для чтения и выбора данных в таблице Iceberg:
- Войдите в учетную запись потребителя.
- В редакторе запросов Athena выполните следующий запрос SELECT к общей таблице:
На основе фильтров потребитель может видеть подмножество столбцов и строк, в которых указана страна Франция.
Операции обновления/удаления
Теперь давайте обновим одну из строк и удалим одну из набора данных, предоставленного потребителю.
- Войдите в учетную запись продюсера.
- Обновление ПО
city='Paris' WHERE city='Reims'
и удалите строкуcustomerid = 3;
- Проверьте обновленный и удаленный набор данных:
- Войдите в учетную запись потребителя.
- В редакторе запросов Athena выполните следующий запрос SELECT к общей таблице:
Мы видим, что доступна только одна строка, а город обновлен до Парижа.
Эволюция схемы: добавление нового столбца
Давайте обновим одну из строк и удалим одну из набора данных, доступного потребителю.
- Войдите в учетную запись продюсера.
- Добавьте новый столбец с именем
geo_loc
в таблице Айсберга. Используйте редактор запросов для запуска одного запроса за раз. Вы можете выделить/выбрать по одному запросу и нажать «Выполнить»/«Выполнить еще раз»:
Чтобы обеспечить видимость вновь добавленных geo_loc
столбец, нам нужно обновить фильтр данных Lake Formation.
- На консоли Lake Formation выберите Фильтры данных в навигационной панели.
- Выберите фильтр данных и выберите Редактировать.
- Под Доступ на уровне столбцов, добавьте новый столбец (
geo_loc
). - Выберите Сохранить.
- Войдите в учетную запись потребителя.
- В редакторе запросов Athena выполните следующую команду
SELECT
запрос к общей таблице:
Новая колонка geo_loc
виден и дополнительный ряд.
Эволюция схемы: удалить столбец
Давайте обновим одну из строк и удалим одну из набора данных, доступного потребителю.
- Войдите в учетную запись продюсера.
- Измените таблицу, чтобы удалить столбец адреса из таблицы Iceberg. Используйте редактор запросов для запуска одного запроса за раз. Вы можете выделить/выбрать по одному запросу и нажать «Выполнить»/«Выполнить еще раз»:
Мы видим, что адрес столбца отсутствует в таблице.
- Войдите в учетную запись потребителя.
- В редакторе запросов Athena выполните следующий запрос SELECT к общей таблице:
Адрес столбца отсутствует в таблице.
Путешествие во времени
Мы уже несколько раз меняли таблицу Iceberg. Таблица Iceberg отслеживает снимки. Выполните следующие шаги, чтобы изучить функциональность путешествий во времени:
- Войдите в учетную запись продюсера.
- Запросите системную таблицу:
Мы можем заметить, что мы создали несколько снимков.
- Запишите один из
committed_at
значения, которые будут использоваться на следующих шагах (в этом примере:2023-01-29 21:35:02.176 UTC
). - Используйте путешествие во времени, чтобы найти снимок таблицы. Используйте редактор запросов для запуска одного запроса за раз. Вы можете выделить/выбрать по одному запросу и нажать «Выполнить»/«Выполнить еще раз»:
Убирать
Выполните следующие действия, чтобы избежать будущих расходов:
- На консоли Amazon S3 удалите корзину хранилища таблиц (для этого поста — блог Iceberg-athena-lakeformation-blog).
- В учетной записи производителя на консоли Athena выполните следующие команды, чтобы удалить созданные вами таблицы:
- В учетной записи производителя на консоли Lake Formation отзовите разрешения для учетной записи потребителя.
- Удалите корзину S3, используемую для расположения результатов запроса Athena, из учетной записи потребителя.
Заключение
Благодаря поддержке перекрестных учетных записей и детальным политикам контроля доступа для таких форматов, как Iceberg, у вас есть гибкость для работы с любым форматом, поддерживаемым Athena. Возможность выполнять операции CRUD с данными в вашем озере данных S3 в сочетании с детальным контролем доступа Lake Formation для всех таблиц и форматов, поддерживаемых Athena, предоставляет возможности для инноваций и упрощения вашей стратегии обработки данных. Мы будем рады услышать ваши отзывы!
Об авторах
Кишор Дхамодаран является старшим архитектором решений в AWS. Кишор помогает стратегическим клиентам с их стратегией облачного предприятия и миграцией, используя свой многолетний опыт работы в отрасли и облачных вычислений.
Джек Йе — инженер-программист группы Athena Data Lake и Storage в AWS. Он является коммиттером Apache Iceberg и членом PMC.
Крис Олсон — инженер-разработчик программного обеспечения в AWS.
Сяосюань Ли — инженер-разработчик программного обеспечения в AWS.
Рахул Сонаване является главным архитектором аналитических решений в AWS, специализируясь на искусственном интеллекте, машинном обучении и аналитике.
- SEO-контент и PR-распределение. Получите усиление сегодня.
- Платоблокчейн. Интеллект метавселенной Web3. Расширение знаний. Доступ здесь.
- Источник: https://aws.amazon.com/blogs/big-data/interact-with-apache-iceberg-tables-using-amazon-athena-and-cross-account-fine-grained-permissions-using-aws-lake-formation/
- :является
- $UP
- 1
- 10
- 100
- 7
- a
- способность
- О нас
- Принять
- доступ
- Учетная запись
- через
- добавленный
- дополнительный
- Дополнительная информация
- адрес
- Администратор
- принял
- против
- AI / ML
- Все
- позволяет
- Amazon
- Амазонка Афина
- аналитика
- и
- апаш
- архитектура
- МЫ
- ПЛОЩАДЬ
- Искусство
- AS
- At
- разрешение
- доступен
- избежать
- AWS
- Формирование озера AWS
- со спинкой
- основанный
- между
- бизнес
- бизнес
- by
- под названием
- CAN
- каталог
- централизованная
- определенный
- изменение
- расходы
- Выберите
- Город
- нажмите на
- облако
- Column
- Колонки
- COM
- сочетании
- полный
- компоненты
- Консоли
- потребитель
- контроль
- контрольная
- страна
- Создайте
- создали
- Создающий
- создание
- Пересекать
- Клиенты
- данным
- Озеро данных
- обмен данными
- стратегия данных
- База данных
- решения
- глубоко
- глубокое погружение
- По умолчанию
- Разработка
- различный
- обсуждать
- вниз
- Падение
- каждый
- Ранее
- редактор
- в регионе EMEA
- включен
- зашифрованный
- шифрование
- Двигатель
- инженер
- Enter
- Предприятие
- Эфир (ETH)
- эволюция
- пример
- ожидаемый
- опыт
- Больше
- и, что лучший способ
- Файл
- фильтр
- фильтрация
- фильтры
- Найдите
- First
- Впервые
- Трансформируемость
- после
- Что касается
- формат
- образование
- каркасы
- Франция
- от
- полный
- функциональность
- будущее
- генерируется
- получить
- Дайте
- управление
- предоставлять
- руководство
- Есть
- имеющий
- слышать
- помогает
- Hive
- HTML
- HTTP
- HTTPS
- ID
- осуществлять
- in
- Инк
- промышленность
- информация
- обновлять
- взаимодействовать
- заинтересованный
- IT
- путешествие
- JPG
- озеро
- Земля
- слой
- изучение
- уровень
- Используя
- ОГРАНИЧЕНИЯ
- линий
- LINK
- расположение
- любят
- Лион
- сделать
- ДЕЛАЕТ
- управления
- член
- Меню
- миграция
- модель
- БОЛЕЕ
- с разными
- имя
- Откройте
- Навигация
- Необходимость
- Новые
- следующий
- Нью-Йорк
- наблюдать
- of
- on
- ONE
- открытый
- открытые данные
- работать
- Операционный отдел
- Возможности
- организации
- Другие контрактные услуги
- хлеб
- Париж
- путь
- выполнять
- Разрешения
- Платон
- Платон Интеллектуальные данные
- ПлатонДанные
- сборах
- После
- представить
- Основной
- производитель
- обеспечивать
- приводит
- Оперативная память
- Читать
- недавно
- отметила
- зарегистрироваться
- зарегистрированный
- замещать
- требуется
- ресурс
- ограничивать
- ограниченный
- результат
- Роли
- роли
- РЯД
- Run
- то же
- Сохранить
- Сценарии
- Раздел
- выбранный
- старший
- набор
- Поделиться
- общие
- разделение
- упростить
- Снимок
- Software
- разработка программного обеспечения
- Инженер-программист
- Решения
- Специальные
- SQL
- и политические лидеры
- Шаги
- диск
- магазин
- хранить
- Стратегический
- Стратегия
- строка
- такие
- поддержка
- Поддержанный
- система
- ТАБЛИЦЫ
- команда
- который
- Ассоциация
- их
- Эти
- время
- путешествие во времени
- раз
- отметка времени
- в
- трек
- путешествовать
- под
- созданного
- Обновление ПО
- обновление
- модернизация
- США
- использование
- Информация о пользователе
- UTC
- VALIDATE
- Наши ценности
- проверить
- версия
- видимость
- видимый
- Войти
- Работа
- работает
- записывать
- лет
- ВАШЕ
- зефирнет