INTEGRITY Документация

Федерация IdP

Федерация IdP позволяет организациям с несколькими аккаунтами Cloudflare использовать единую конфигурацию поставщика идентификации (IdP) сразу для всех аккаунтов. Вместо того чтобы настраивать один и тот же IdP (например, Okta или Entra ID) отдельно в каждом аккаунте, вы настраиваете его один раз в исходном аккаунте и делитесь им с остальными аккаунтами своей организации.

Каждый аккаунт-получатель получает IdP-подключение, доступное только для чтения, которое возвращает аутентификацию в исходный аккаунт через мост: скрытое приложение в исходном аккаунте, которое обеспечивает вход между аккаунтами. Конечные пользователи входят в систему с использованием своих существующих учётных данных IdP, а политики Access соответствующего аккаунта оценивают полученную личность так же, как при любом другом входе через IdP.

Как это работает

Настройка федерации IdP состоит из двух шагов:

  1. Создайте federation grant. Grant позволяет предоставить доступ к IdP сразу нескольким аккаунтам. При создании grant также автоматически создаётся скрытое bridge application в исходном аккаунте.
  2. Предоставьте доступ к grant. Распространите grant на определённые аккаунты или на всю организацию. Для каждого аккаунта-получателя автоматически создаётся доступное только для чтения подключение IdP, указывающее на bridge.

Когда пользователь принимающего аккаунта проходит аутентификацию, запрос направляется через мост к исходному IdP. Исходный IdP выполняет аутентификацию, и итоговые данные удостоверения передаются обратно в политики Access принимающего аккаунта.

Предварительные требования

Предоставьте общий доступ к IdP

Панель управления объединяет создание grant и его предоставление в единый процесс. Если federation grant для этого IdP уже существует, он используется повторно, в противном случае новый создаётся автоматически.

  1. В Панель управления Cloudflare, перейдите в Zero Trust > Интеграции > Поставщики удостоверений.
  2. Найдите IdP, который вы хотите предоставить в общий доступ, и выберите меню с тремя точками.
  3. Выберите Поделиться.
  4. Выберите аккаунты получателей, с которыми нужно поделиться IdP.
  5. Проверьте конфигурацию общего доступа и выберите Подтверждение.

IdP автоматически передаётся в общий доступ выбранным аккаунтам. Каждый аккаунт-получатель получает подключение IdP только для чтения, указывающее на bridge в исходном аккаунте.

Предоставление доступа к IdP через API выполняется в два этапа: сначала создаётся grant федерации, а затем доступ к нему предоставляется отдельным учётным записям или всей организации.

1. Создайте грант федерации

curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/idp_federation_grants" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"idp_id": "<IDP_UUID>"
	}'

Ответ включает grant id, который вы будете использовать на следующем шаге. Чтобы вывести список всех грантов федерации в вашем аккаунте:

curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/idp_federation_grants" \
	--request GET \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"

2. Поделитесь grant

Можно поделиться этим grant с определёнными аккаунтами или со всей вашей Cloudflare Organization. В разделе recipients array укажите каждого получателя с помощью одного из следующих полей:

  • recipient_account_id: Предоставляет доступ к IdP только одному аккаунту. Повторите заполнение этого поля для каждого аккаунта, который нужно добавить.
  • organization_id: Предоставляет доступ к IdP всем аккаунтам в вашей организации Cloudflare.

Укажите только одно из этих полей для каждого получателя. Если вы не укажете ни одно из них, grant по умолчанию предоставляется всей вашей организации.

Чтобы поделиться этим grant с одним или несколькими конкретными аккаунтами:

curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/shares" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"name": "Identity provider: OpenID Connect",
		"recipients": [
				{
						"recipient_account_id": "<RECIPIENT_ACCOUNT_ID>"
				}
		],
		"resources": [
				{
						"resource_account_id": "<SOURCE_ACCOUNT_ID>",
						"resource_id": "<GRANT_ID>",
						"resource_type": "idp-federation-grant",
						"meta": {}
				}
		]
	}'

Чтобы поделиться этим grant со всеми аккаунтами вашей организации, замените recipients array с вашим Organization ID:

curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/shares" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"name": "Identity provider: OpenID Connect",
		"recipients": [
				{
						"organization_id": "<ORGANIZATION_ID>"
				}
		],
		"resources": [
				{
						"resource_account_id": "<SOURCE_ACCOUNT_ID>",
						"resource_id": "<GRANT_ID>",
						"resource_type": "idp-federation-grant",
						"meta": {}
				}
		]
	}'

Каждому аккаунту-получателю автоматически предоставляется IdP-подключение, доступное только для чтения, которое указывает на мост. Если вы предоставляете доступ Organization, это подключение получает каждый аккаунт в данной Organization.

Прекратить общий доступ к IdP

Чтобы прекратить делиться IdP, удалите federation grant, а также сам share.

Панель управления обрабатывает удаление grant и share в рамках единого процесса.

  1. В Панель управления Cloudflare, перейдите в Zero Trust > Интеграции > Поставщики удостоверений.
  2. Найдите общий IdP и выберите меню с тремя точками.
  3. Выберите Прекратить общий доступ.
  4. Подтвердите действие.

Отмена федерации IdP через API выполняется в два этапа. Удаление grant прекращает предоставление доступа и удаляет IdP с доступом только для чтения из аккаунтов получателей. При необходимости запись об общем доступе можно удалить позже.

1. Удалите грант федерации

curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/idp_federation_grants/$GRANT_ID" \
	--request DELETE \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"

2. (Необязательно) Удалите общий ресурс

curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/shares/$SHARE_ID" \
	--request DELETE \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"

Ограничения