Начало работы с AWS (часть 9)

Опубликовано: 7 Марта, 2023
Начало работы с AWS (часть 9)

  • Начало работы с AWS (часть 2)
  • Начало работы с AWS (часть 3)
  • Начало работы с AWS (часть 4)
  • Начало работы с AWS (часть 5)
  • Начало работы с AWS (часть 6)
  • Начало работы с AWS (часть 7)
  • Начало работы с AWS (часть 8)
  • Начало работы с AWS (часть 10)
  • Начало работы с AWS (часть 11)
  • Начало работы с AWS (часть 12)
  • Начало работы с AWS (часть 13)
  • Начало работы с AWS (часть 14)

Введение

В нескольких последних статьях этой серии мы рассмотрели AWS Identity and Access Management (IAM) — веб-сервис, который позволяет создавать пользователей и управлять ими, а также назначать разрешения пользователей для облачной среды AWS. Мы начали с изучения функций консоли IAM, а затем описали, как создать понятный псевдоним для идентификатора своей учетной записи AWS, чтобы убедиться, что вы не сгенерировали никаких ключей доступа для корневой учетной записи AWS, как создать нового пользователя, который имеет права администратора, поэтому вы можете использовать этого пользователя вместо вашей корневой учетной записи для управления средой AWS, как вы можете реализовать многофакторную аутентификацию (MFA) для добавления дополнительного уровня защиты к вашей корневой учетной записи AWS и учетным записям пользователей IAM, и как вы можете использовать политики IAM для назначения разрешений на управление доступом к ресурсам AWS.

Понимание того, как создавать и использовать политики, является ключевым компонентом, помогающим обеспечить надлежащую защиту вашей облачной среды AWS, и в последней статье этой серии мы объяснили разницу между разрешениями и политиками и описали некоторые политики по умолчанию, доступные в IAM. для вас, чтобы использовать. Как вы узнали из прошлой статьи, большинство политик по умолчанию можно использовать только для управления доступом к определенным сервисам и ресурсам AWS. Например, шаблон политики AmazonEC2ReadOnlyAccess можно использовать для предоставления доступа только для чтения к Amazon EC2 через Консоль управления AWS, и эта политика полезна только в том случае, если вы используете сервисное предложение Amazon Elastic Compute Cloud (EC2) от AWS.

Несмотря на то, что AWS предоставляет вам более 100 различных шаблонов политик по умолчанию, которые вы можете использовать, могут возникнуть ситуации, когда вы захотите контролировать доступ к своим сервисам и ресурсам AWS более детально, чем позволяет любая из политик по умолчанию. В этой и следующей статье этой серии мы рассмотрим несколько различных способов создания собственных настраиваемых политик. Но прежде чем мы это сделаем, давайте сначала снова заглянем под капот, чтобы узнать, как политики определяются в IAM.

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

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

Рис. 1. Подробная информация о политике AmazonEC2ReportsAccess

Ключевым моментом, который мы хотим изучить сегодня, является сценарий в разделе «Документ политики» на этой странице. Этот сценарий написан на специальном языке форматирования под названием JSON, что означает нотация объектов JavaScript, упрощенный текстовый формат для хранения и обмена данными. JSON основан на подмножестве языка программирования JavaScript и стандартизирован как стандарт обмена данными JSON ECMA-404 (см. эту ссылку).

Один из способов понять JSON — сравнить его с XML (расширяемый язык разметки), который, как и JSON, представляет собой текстовый формат для определения структурированных данных, а также не зависит от языка программирования, используемого для управления данными. Например, приведенный ниже фрагмент XML определяет структуру данных с именем <users>, содержащую три структуры <user>, каждая из которых имеет атрибуты имени <first> и <last>:

<пользователи>

<пользователь>

<firstName>Боб</firstName>

<lastName>Смит</lastName>

</пользователь>

<пользователь>

<firstName>Мэри</firstName>

<lastName>Джонс</lastName>

</пользователь>

<пользователь>

<firstName>Дон</firstName>

<lastName>Хуан</lastName>

</пользователь>

</пользователи>

Аналогичная структура данных в JSON может выглядеть так:

{

«пользователи»: [

{

«имя»: «Боб»,

«Фамилия»: «Смит»

}

{

«имя»: «Мария»,

«Фамилия»: «Джонс»

}

{

«имя»: «Дон»,

«Фамилия»: «Хуан»

}

]

}

В приведенной выше структуре данных JSON у нас есть объект с именем «пользователи» и массив значений, каждое из которых состоит из пары имя/значение. в JSON начинается и заканчивается фигурными скобками и состоит из одной или нескольких пар имя:значение, разделенных запятыми. В приведенном выше примере есть четыре объекта:

{ «пользователи»: […] }

{ «Имя»: «Боб», «Фамилия»: «Смит» }

{ «Имя»: «Мэри», «Фамилия»: «Джонс» }

{ «Имя»: «Дон», «Фамилия»: «Хуан» }

Второй, третий и четвертый объекты состоят из двух пар имя:значение, где значения являются строками. В первом объекте значение представляет собой , обозначенный квадратными скобками и содержащий один или несколько . В JSON в паре имя:значение может быть строкой (которая должна быть заключена в двойные кавычки), числом, TRUE, FALSE, NULL, массивом или другим объектом. Однако в паре имя:значение всегда должно быть строкой, заключенной в двойные кавычки.

И это все, что касается синтаксиса JSON. В JSON есть объекты, пары или имя:значение и массивы. Просто, не так ли?

Теперь давайте рассмотрим JSON в документе политики, который лежит в основе политики AmazonEC2ReadOnlyAccess:

{

«Версия»: «2012-10-17»,

"Заявление": [

{

«Эффект»: «Разрешить»,

«Действие»: «ec2:Описать*»,

«Ресурс»: «*»

},

{

«Эффект»: «Разрешить»,

«Действие»: «elasticloadbalancing:Describe*»,

«Ресурс»: «*»

},

{

«Эффект»: «Разрешить»,

"Действие": [

"cloudwatch:ListMetrics",

«cloudwatch:GetMetricStatistics»,

«cloudwatch:Описать*»

],

«Ресурс»: «*»

},

{

«Эффект»: «Разрешить»,

«Действие»: «автомасштабирование:Описать*»,

«Ресурс»: «*»

}

]

}

Вышеупомянутый политический документ включает в себя пять различных видов элементов:

Версия — этот элемент является обязательным и используется для указания версии используемого языка политики и всегда должен иметь значение «2012-10-17», как показано выше.

Заявление — этот элемент также является обязательным и содержит массив элементов, определяющих тип разрешений, которые политика будет предоставлять или запрещать, когда политика прикреплена к пользователю или группе IAM.

Эффект — этот тип элемента определяет, будет ли разрешен или запрещен доступ к ресурсу.

Действие — этот тип элемента описывает действия, которые элемент Эффект либо разрешает, либо запрещает.

Ресурс — этот тип элемента определяет ресурсы, доступ к которым контролируют элементы «Действие» и «Эффект».

Существуют и другие типы элементов, которые может содержать политический документ, но перечисленные выше являются наиболее распространенными.

Теперь в упрощенном виде вышеприведенный политический документ в основном выглядит так:

{ «Версия»: «2012-10-17», «Заявление»: […] }

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

{ «Версия»: «2012-10-17», «Утверждение»: [ , , , …] }

Каждый из элементов в массиве для элемента Statement должен иметь следующую форму:

{ «Эффект»: , «Действие»: , «Ресурс»: }

Здесь может быть либо «Разрешить», либо «Запретить», может быть либо строкой, либо массивом пар имя:значение, а может быть либо строкой, либо массивом пар имя:значение. Давайте посмотрим на первый объект в элементе Statement нашего документа политики:

{

«Эффект»: «Разрешить»,

«Действие»: «ec2:Описать*»,

«Ресурс»: «*»

}

Приведенный выше фрагмент политики позволяет пользователю или группе, к которой привязана политика, описывать (получать информацию о) любой информации (см. символ подстановки звездочки), относящейся к инстансам и среде Amazon EC2. В качестве упражнения посмотрите, сможете ли вы выяснить, что будут делать оставшиеся объекты в массиве Statement нашего примера документа политики, когда политика применяется к пользователю или группе.

Дополнительные ресурсы

Дополнительные сведения о том, как JSON используется для определения политик IAM, см. в справочнике по политикам IAM AWS.

Базовый обзор JSON и ссылки на множество других ресурсов по этому вопросу см. на http://json.org.

  • Начало работы с AWS (часть 2)
  • Начало работы с AWS (часть 3)
  • Начало работы с AWS (часть 4)
  • Начало работы с AWS (часть 5)
  • Начало работы с AWS (часть 6)
  • Начало работы с AWS (часть 7)
  • Начало работы с AWS (часть 8)
  • Начало работы с AWS (часть 10)
  • Начало работы с AWS (часть 11)
  • Начало работы с AWS (часть 12)
  • Начало работы с AWS (часть 13)
  • Начало работы с AWS (часть 14)