{"meta":{"title":"Настройка OpenID Connect в Google Cloud Platform","intro":"Использование OpenID Connect в рабочих процессах для проверки подлинности на платформе Google Cloud Platform.","product":"GitHub Actions","breadcrumbs":[{"href":"/ru/actions","title":"GitHub Actions"},{"href":"/ru/actions/how-tos","title":"Инструкции"},{"href":"/ru/actions/how-tos/secure-your-work","title":"Защита работы"},{"href":"/ru/actions/how-tos/secure-your-work/security-harden-deployments","title":"Развертывания защиты безопасности"},{"href":"/ru/actions/how-tos/secure-your-work/security-harden-deployments/oidc-in-google-cloud-platform","title":"OIDC в Google Cloud Platform"}],"documentType":"article"},"body":"# Настройка OpenID Connect в Google Cloud Platform\n\nИспользование OpenID Connect в рабочих процессах для проверки подлинности на платформе Google Cloud Platform.\n\n## Обзор\n\nOpenID Connect (OIDC) позволяет вашим GitHub Actions рабочим процессам получать доступ к ресурсам в Google Cloud Platform (GCP) без необходимости хранить учетные данные GCP как долгоживущие GitHub секреты.\n\nЭто руководство даёт обзор того, как настроить GCP так, чтобы он доверял GitHubOIDC с федеративной идентичностью, а также включает пример рабочего процесса действия [`google-github-actions/auth`](https://github.com/google-github-actions/auth) , использующего токены для аутентификации в GCP и доступа к ресурсам.\n\n## Необходимые компоненты\n\n* Основные понятия о том, как GitHub использует OpenID Connect (OIDC) и его архитектуру и преимущества, см. в разделе [OpenID Connect](/ru/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect).\n\n* Прежде чем продолжить, необходимо спланировать стратегию безопасности, чтобы обеспечить выдачу маркеров доступа только предсказуемым способом. Чтобы управлять тем, как поставщик облачных служб выдает маркеры доступа, **необходимо** определить по крайней мере одно условие, запретив недоверенным репозиториям запрашивать маркеры доступа к облачным ресурсам. Дополнительные сведения см. в разделе [OpenID Connect](/ru/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect#configuring-the-oidc-trust-with-the-cloud).\n\n## Добавление поставщика удостоверений для облачной рабочей нагрузки Google\n\nЧтобы настроить поставщик удостоверений OIDC в GCP, необходимо выполнить описанную ниже настройку. Инструкции по внесению этих изменений см. в [документации GCP](https://github.com/google-github-actions/auth).\n\n1. Создайте пул удостоверений.\n2. Настройте сопоставление и добавьте условия.\n3. Подключение новый пул к учетной записи службы.\n\nДополнительное руководство по настройке поставщика удостоверений:\n\n* Для обеспечения защиты безопасности убедитесь, что вы ознакомились [с настройкой доверия OIDC в облаке](/ru/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect#configuring-the-oidc-trust-with-the-cloud). Пример см. в разделе [\"Настройка темы\" в поставщике](/ru/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect#configuring-the-subject-in-your-cloud-provider) облачных служб.\n* Чтобы учетная запись службы была доступна для настройки, ей необходимо назначить роль `roles/iam.workloadIdentityUser`. Дополнительные сведения см. в [документации по GCP](https://cloud.google.com/iam/docs/workload-identity-federation?_ga=2.114275588.-285296507.1634918453#conditions).\n* URL эмитента для использования: `https://token.actions.githubusercontent.com`\n\n## Обновление вашего GitHub Actions рабочего процесса\n\nЧтобы обновить рабочие процессы для OIDC, необходимо внести два изменения в YAML:\n\n1. Добавьте параметры разрешений для маркера.\n2. Используйте действие [`google-github-actions/auth`](https://github.com/google-github-actions/auth) для обмена токена OIDC (JWT) на облачный токен доступа.\n\n> \\[!NOTE]\n> Если среды используются в рабочих процессах или политиках OIDC, рекомендуется добавить правила защиты в среду для дополнительной безопасности. Например, можно настроить правила развертывания в среде, чтобы ограничить, какие ветви и теги могут развертываться в среде или получить доступ к секретам среды. Дополнительные сведения см. в разделе [Управление средами для развертывания](/ru/actions/deployment/targeting-different-environments/managing-environments-for-deployment#deployment-protection-rules).\n\n### Добавление параметров разрешений\n\nДля выполнения задания или рабочего процесса требуется `permissions` параметр, позволяющий [`id-token: write`](/ru/actions/security-guides/automatic-token-authentication#modifying-the-permissions-for-the-github_token) поставщику OIDC GitHubсоздать веб-токен JSON для каждого запуска.\n\n> \\[!NOTE] Параметр `id-token: write` в разрешениях рабочего процесса не дает рабочему процессу разрешение на изменение или запись в ресурсы. Вместо этого он позволяет рабочему процессу запрашивать (получить) и использовать (задать) маркер OIDC для действия или шага. Затем этот маркер используется для проверки подлинности с помощью внешних служб с помощью кратковременного маркера доступа.\n\nПодробные сведения о необходимых разрешениях, примерах конфигурации и расширенных сценариях см. в разделе [Справочник по OpenID Connect](/ru/actions/reference/openid-connect-reference##workflow-permissions-for-the-requesting-the-oidc-token).\n\n### Запрос маркера доступа\n\nДействие `google-github-actions/auth` получает JWT от GitHub провайдера OIDC, а затем запрашивает токен доступа у GCP. Дополнительные сведения см. в [документации по GCP](https://github.com/google-github-actions/auth).\n\nВ этом примере есть задание `Get_OIDC_ID_token`, которое использует действия для запроса списка служб из GCP.\n\n* `WORKLOAD-IDENTITY-PROVIDER` — замените на путь к поставщику удостоверений в GCP. Например: `projects/example-project-id/locations/global/workloadIdentityPools/name-of-pool/providers/name-of-provider`\n* `SERVICE-ACCOUNT` — замените на имя учетной записи службы в GCP.\n\nЭто действие меняет GitHub токен OIDC на токен доступа Google Cloud с использованием [Федерации идентификации рабочей нагрузки](https://cloud.google.com/iam/docs/workload-identity-federation).\n\n```yaml copy\n# Этот рабочий процесс использует действия, которые не сертифицированы GitHub.\n# Они предоставляются сторонним поставщиком, и на них распространяются\n# отдельные условия обслуживания, политика конфиденциальности и поддержка\n# документации.\nname: List services in GCP\non:\n  pull_request:\n    branches:\n      - main\n\npermissions:\n  id-token: write\n\njobs:\n  Get_OIDC_ID_token:\n    runs-on: ubuntu-latest\n    steps:\n    - id: 'auth'\n      name: 'Authenticate to GCP'\n      uses: 'google-github-actions/auth@f1e2d3c4b5a6f7e8d9c0b1a2c3d4e5f6a7b8c9d0'\n      with:\n          create_credentials_file: 'true'\n          workload_identity_provider: 'WORKLOAD-IDENTITY-PROVIDER'\n          service_account: 'SERVICE-ACCOUNT'\n    - id: 'gcloud'\n      name: 'gcloud'\n      run: |-\n        gcloud auth login --brief --cred-file=\"${{ steps.auth.outputs.credentials_file_path }}\"\n        gcloud services list\n```\n\n## Дополнительные материалы\n\n* [Использование OpenID Connect с многократно используемыми рабочими процессами](/ru/actions/deployment/security-hardening-your-deployments/using-openid-connect-with-reusable-workflows)\n* [Справочник по локальным запускам](/ru/actions/hosting-your-own-runners/managing-self-hosted-runners/communicating-with-self-hosted-runners)"}