Сценарий:
- Считайте, что наша учетная запись AWS Quicksight настроена с SSO для визуализации метрик продукта, и вы хотите управлять пользователями Quicksight.
Требования:
- Мониторинг активности пользователей, включая последний вход в систему, использование ресурсов, популярность приборной панели и т.д..
Проблема:
- В настоящее время в QuickSight нет функции, позволяющей напрямую видеть активность метрик ваших пользователей. С пользователей QuickSight взимается ежемесячная плата, даже если пользователь не входит в аккаунт. Вы можете ожидать полную плату за месяц, даже если пользователь будет удален до конца месяца.
Зачем?
- Чтобы отслеживать активность пользователей и выявлять неактивных пользователей.
- Чтобы уведомить неактивных пользователей, чтобы напомнить им об этом.
- Удалять пользователя автоматически, если он не был активен в течение n дней.
- Улучшить приборные панели с наименьшим количеством посещений.
- Вывести из эксплуатации приборные панели, пользующиеся меньшей популярностью.
Решение:
- Когда речь идет об AWS, все является вызовом API.
- Каждое действие будет регистрироваться в Cloudtrail.
- Мы можем использовать журналы Amazon CloudTrail для сбора информации об активности пользователей/панелей.
Доступ к учетной записи Quicksight:
- Когда пользователь входит в AWS, если учетная запись пользователя не доступна в Quicksight, она будет создана.
- После создания учетной записи пользователя на основе роли и предоставленных разрешений, пользователь может получить доступ к ресурсам Quicksight, таким как приборные панели, анализ, наборы данных и т.д..
- CloudTrail регистрирует действия, выполняемые пользователем, ролью или службой AWS в Amazon QuickSight.
- CloudTrail регистрирует следующие события для Quicksight:
Создание/обновление/удаление источника данных
Создание/обновление/удаление набора данных
Анализ создание/доступ/обновление/удаление
Создание/доступ/обновление/удаление приборной панели и т.д…
Процесс мониторинга активности пользователей Quicksight:
-
Прямой мониторинг активности пользователей
-
После того как инструмент SSO интегрирован с Quicksight, пользователи могут использовать этот инструмент для входа в Quicksight.
-
Большинство инструментов используют SAML (Security Assertion Markup Language 2.0) для объединения пользователей в AWS.
-
Единственный способ мониторинга активности пользователей из коробки — только через Quicksight Manage Console.
-
Используя AWS API/CLI/SDK, мы можем собрать необходимую информацию из Cloudtrail.
-
SSO будет использовать AWS STS (Security Token Service) для запроса временных учетных данных с ограниченными привилегиями для объединенных пользователей.
-
Федеративный пользователь будет предоставлен для выполнения действия sts:AssumeRoleWithSAML для доступа к ресурсам Quicksight.
-
Действие входа пользователя SSO будет зарегистрировано в разделе {‘Event’ : ‘AssumeRoleWithSAML’}.
-
Другие действия будут регистрироваться под {‘Event’ : [‘CreateUser’, ‘DeleteUser’, ‘UpdateUser’, ‘GetDashboard’, ‘GetAnalysis’]}.
-
Отфильтровав события по имени события, мы можем получить список всех действий из CloudTrail.
-
Из журнала CloudTrail мы можем получить данные об идентификации пользователя, такие как время события, тип, имя пользователя, провайдер идентификации и т.д….
Пример кода:
AWS CLI:
aws cloudtrail lookup-events - lookup-attributes AttributeKey=EventName,AttributeValue=GetDashboard
AWS API:
{
"EndTime": number,
"EventCategory": "string",
"LookupAttributes": [
{
"AttributeKey": "string",
"AttributeValue": "string"
}
],
"MaxResults": number,
"NextToken": "string",
"StartTime": number
}
Boto SDK:
response = client.lookup_events(
LookupAttributes=[
{
'AttributeKey': 'EventId'|'EventName'|'ReadOnly'|'Username'|'ResourceType'|'ResourceName'|'EventSource'|'AccessKeyId',
'AttributeValue': 'string'
},
],
StartTime=datetime(2015, 1, 1),
EndTime=datetime(2015, 1, 1),
EventCategory='insight',
MaxResults=123,
NextToken='string'
)
Образец ответа:
{
"userIdentity": {
"type": "AssumedRole",
"principalId": "<principal_id>: <user_name>",
"arn": "arn:aws:sts:: <aws_account_id>:assumed-role/<IAM_role_ name>/<user_name>",
"accountId": "<aws_account_id>",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "<principal_id>",
…
}
}
},
"eventTime": "2022-17-13T16:55:36Z",
"eventSource": "quicksight.amazonaws.com",
"eventName": "GetDashboard",
"awsRegion": "us-east-1",
"eventID": "65ae334b-4202-4961-9ac7-d5a9d44416e2",
"readOnly": true,
"eventType": "AwsServiceEvent",
"serviceEventDetails": {
"eventRequestDetails": {
"dashboardId": "arn:aws:quicksight:us-east-1: <aws_account_id>:dashboard/<dashboard_id>"
},
"eventResponseDetails": {
"dashboardDetails": {
"dashboardName": "Product X",
"dashboardId": "arn:aws:quicksight:us-east-1: <aws_account_id>:dashboard/<dashboard_id>",
"analysisIdList": [
"arn:aws:quicksight:us-east-1: <aws_account_id>:analysis/<analysis_id>"
}
}
}
}
Удалить пользователя:
response = client.delete_user(
UserName='string',
AwsAccountId='string',
Namespace='string'
)
Вот несколько моментов, о которых следует помнить:
- CloudTrail хранит журналы только в течение 90 дней.
- С пользователей QuickSight взимается ежемесячная плата, даже если пользователь не входит в учетную запись.
- Вы можете ожидать оплаты за весь месяц, даже если пользователь будет удален до конца месяца.
- Пользователи QuickSight оплачиваются в зависимости от версии QuickSights Edition (Standard/Enterprise).
- Считыватели QuickSight оплачиваются за сеанс считывания, причем сеансы проводятся с шагом в 30 минут. Стоимость каждой сессии составляет $0,30 для каждого читателя, максимум $5 для каждого читателя в месяц (месяц к месяцу).
- Если у читателя открыта приборная панель, таймер будет продолжать работать (с шагом в 30 минут), пока читатель не закроет или не свернет окно приборной панели.
- Если читатель открыл приборную панель и закрыл ее до истечения 30 минут сессии, таймер остановится на 30 минутах и не будет продолжать работать.
- 10 ГБ емкости SPICE предоставляются учетной записи QuickSight для каждого добавленного пользователя без дополнительной оплаты.
- Дополнительный SPICE можно приобрести по цене $0,38 за ГБ в месяц.
Заключение:
- После получения необходимых данных из CloudTrail мы можем хранить их в S3 и использовать для управления учетной записью Quicksight. Мы используем простую функцию Lambda, которая может автоматически удалять неактивных пользователей. Мы также можем настроить триггер для функции лямбда с помощью Cloudwath (задание Cron).
Часто задаваемые вопросы:
Вопрос: Если пользователь был добавлен и удален в любой момент месяца, плата будет начислена за те дни, когда он был активен, правильно?
Ответ:
- Нет, если пользователь Автор/Админ удален из аккаунта, вам все равно будет выставлен счет за этого пользователя за месяц (начиная с того дня, когда он был указан как активный). Если пользователь уже был указан в аккаунте с первого дня месяца, вы можете рассчитывать на полную месячную плату. Если пользователь был добавлен в аккаунт только в середине месяца (скажем, на 10-й день), то вы получите только общую сумму, рассчитанную по оставшимся дням месяца, и вам не будет выставлен счет за 10 дней, когда пользователь не был указан как активный.
Вопрос: Когда АДМИН / АВТОР работает над ресурсом (анализ / приборная панель и т.д…..). Будет ли это оплачиваться каким-либо образом?
Ответ:
- С пользователей взимается ежемесячная плата, независимо от их активности входа в систему или использования ресурсов на аккаунте. Это ежемесячная плата.
Вопрос: Если READER активен в течение дня, то сессии будут оплачиваться, если максимальная сумма $5 USD еще не достигнута, правильно?
Ответ:
- С пользователя будет взиматься плата на основании времени, в течение которого открыта панель инструментов. Например,
- Читатель открывает приборную панель на 1 час, 2 раза по 30 минут. Учитывая, что каждая сессия оплачивается по $0.30 за 30 минут, с этого конкретного читателя будет снято $0.60 ($0.30 x 2 (30мин + 30мин) = $0.60).
- Если читатель оставляет приборную панель открытой и постоянно видимой в течение 16 часов, то плата для этого пользователя составит $5 за этот день. Однако, поскольку максимальная плата составляет $5 в месяц, вы не увидите никаких дальнейших счетов для этого конкретного читателя.
Вопрос: Если пользователь был добавлен 5-го числа, а удален 6-го, будет ли взиматься плата?
Ответ:
- Поскольку оплата за пользователей взимается ежемесячно, вы будете платить с 5-го числа до последнего дня того же месяца, после чего оплата за удаленного пользователя не будет взиматься. Именно поэтому начисления за пользователей отображаются ежедневно на консоли биллинга.
Вопрос: Если мы приобретем подписку для всех наших ADMIN / AUTHOR (8 пользователей), сколько затрат это сэкономит?
Ответ:
- Для корпоративной версии QuickSight, оплачивая ежемесячно, вы заплатите $192 за 8 пользователей ($24 за пользователя/месяц * 8 пользователей = $192).
- Годовая подписка стоит $18 за пользователя в месяц. Это означает, что вы заплатите $144 в месяц за 8 пользователей, сэкономив $48 в месяц.
Ссылки:
- Единый вход между Okta Universal Directory и AWS
- Объединение доступа к amazon Quicksight с okta
- Создание административной консоли в Amazon QuickSight для анализа показателей использования
- Регистрация операций с помощью AWS CloudTrail
- Ручное создание таблицы для журналов CloudTrail в Athena
- Анализ безопасности, соответствия нормативным требованиям и операционной деятельности с помощью AWS CloudTrail и Amazon Athena
- Amazon QuickSight теперь поддерживает ведение журналов аудита с помощью AWS CloudTrail
- Отслеживание событий, не относящихся к API, с помощью журналов CloudTrail
- Запрос журналов AWS CloudTrail — понимание журналов CloudTrail и таблиц Athena