В марте прошлого года (это был 2019 год, если вы забыли; разве это не похоже на целую вечность назад?) мы открыли исходный код Cartography, нашего инструмента Python, который объединяет технические активы и взаимосвязи между ними в графической базе данных.
К ролям, пользователям и группам AWS привязаны политики, которые определяют действия, которые им разрешено выполнять или не выполнять в отношении определенного набора ресурсов. IAM может быть очень сложным: вы можете указать расширенные предложения, такие как NotAction (которые определяют, что ресурс не может делать) или NotResource (которые определяют ресурсы, к которым это утверждение не применяется). Кроме того, вы можете использовать символ *, чтобы политика применялась к объектам, которые соответствуют заданной текстовой строке. Результирующий доступ принципала определяется всеми сопоставленными с ним операторами политики.
Если вы достаточно долго смотрите на запрос, он имеет смысл: мы ищем PolicyStatements, которые прикреплены к узлам AWSPolicy, которые прикреплены к AWSPrincipals, где * установить как ресурс, так и действие.

Для самих ремешков я выбрал кангу, хлопковый материал, который широко носят и используют в Восточной, Западной и Центральной Африке. Канги обычно красочные и узорчатые, и их можно использовать для одежды (например, саронг), шарфа или повязки на голову. Я выбрал этот материал из-за его культурной значимости в Восточной Африке и в надежде, что его включение сделает технологию более понятной и доступной.

Картография будет искать все узлы AWSPolicyStatement, которые разрешают разрешение S3:GetObject, и найдет все узлы AWSPrincipal, прикрепленные к этим утверждениям. Картография также проверяет, что никакие другие узлы AWSPolicyStatement не запрещают разрешение S3:GetObject.

Как видно выше, наш план состоял в том, чтобы Cartography автоматически сопоставляла участников AWS с ресурсами, к которым они могут получить доступ! Эти сопоставления будут указаны в файле permission_relationships.yaml, и вы можете прочитать, как это настроить здесь. Чтобы понять, как это работает, мы рассмотрим пример CAN_READ на изображении выше:

Этот дизайн не должен быть авторитетным дизайном, а скорее провокацией и началом новых способов осмысления доступного дизайна. Хотя этот дизайн специально рассматривается как дополнение к системе Oculus Go, я надеюсь, что он вдохновит других дизайнеров продуктов на размышления о том, как системы могут невольно лишать чернокожих женщин возможности удобного использования их продукта.

Использование графиков помогает нам очень эффективно визуализировать и рассуждать о проблемах безопасности. Одной из таких проблем является понимание отношений облачных разрешений: нам нужен был ответ на вопрос «у кого есть разрешение на чтение и запись в мои ресурсы конфиденциальных данных?»

Lyft — это магазин AWS, а механизм контроля доступа AWS называется IAM. Он определяет, какие участники (например, пользователи, группы и роли) могут выполнять какие действия с какими ресурсами (например, сегментами хранилища, вычислительными экземплярами и т. д.). IAM является мощным, легко настраиваемым и может работать за пределами учетных записей. IAM может быть легко настроен неправильно, и ошибки здесь могут позволить злоумышленникам легко перемещаться и выполнять вредоносные действия в вашей среде.

Затем Cartography выполнит поиск всех узлов S3Bucket в текущей учетной записи AWS (поскольку ResourceType указан выше как S3Bucket) и нарисует ребро графа, помеченное CAN_READ, от AWSPrincipal к S3Bucket.

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

MATCH (stat:AWSPolicyStatement) — (pol:AWSPolicy) — (principal:AWSPrincipal)
WHERE stat.effect = «Разрешить»
AND any(x IN stat.resource WHERE x="*")< br /> AND any(x IN stat.action WHERE x=”*” )
RETURN *

Этот дизайн не должен быть авторитетным дизайном, а скорее провокацией и началом новых способов осмысления доступного дизайна. Хотя этот дизайн специально рассматривается как дополнение к системе Oculus Go, я надеюсь, что он вдохновит других дизайнеров продуктов на размышления о том, как системы могут невольно лишать чернокожих женщин возможности удобного использования их продукта.

Со всеми этими данными на графике ранее в апреле этого года мы подумали, что было бы неплохо оценить политики IAM в автономном режиме, чтобы мы могли определить результирующие доступы данного принципала (для тех, кто знаком с безопасностью Windows, этот расчет может немного напомнить вам RSOP). Мы назвали эту функцию «Отношения прав доступа к ресурсам».

Хорошо, что у нас есть данные, но обременительно помнить все правила оценки политики IAM, чтобы ответить на этот вопрос. Мы бы сэкономили много времени, если бы могли просто спросить: «У кого есть разрешение на чтение из моих сегментов хранилища?» или «у кого есть разрешение на выполнение запросов к моим таблицам DynamoDB?»

В качестве мотивирующего примера мы хотели быстро увидеть, какие участники имеют права root или «подобные root» привилегии в нашей среде. Политика IAM, подобная этой, разрешает эквивалент привилегий суперпользователя всем участникам, к которым она подключена, потому что она позволяет выполнять любые действия на любом ресурсе:

Результат может выглядеть примерно так. Если вы попробуете это сами, вас может ожидать неприятный сюрприз, если вы не ожидаете, что какие-либо принципы будут иметь высокие привилегии:

Подводя итог, мы взяли