Skip to main content

Эта версия GitHub Enterprise Server была прекращена 2024-12-19. Исправления выпускаться не будут даже при критических проблемах безопасности. Для повышения производительности, повышения безопасности и новых функций выполните обновление до последней версии GitHub Enterprise Server. Чтобы получить справку по обновлению, обратитесь в службу поддержки GitHub Enterprise.

Включение GitHub Actions с хранилищем Amazon S3

Можно включить GitHub Actions на GitHub Enterprise Server и использовать хранилище Amazon S3 для хранения данных, созданных при выполнении рабочего процесса.

Кто может использовать эту функцию?

Site administrators can enable GitHub Actions and configure enterprise settings.

О внешнем хранилище для GitHub Actions

GitHub Actions использует внешнее хранилище BLOB-объектов для хранения данных, созданных рабочими процессами. Сохраненные данные включают журналы рабочих процессов, кэши и артефакты сборки, отправленные пользователем. Дополнительные сведения см. в разделе Начало работы с GitHub Actions для сервера GitHub Enterprise.

Существует два варианта настройки GitHub Enterprise Server для подключения к внешнему поставщику хранилища:

  • OpenID Connect (OIDC)
  • Традиционная проверка подлинности на основе учетных данных с помощью секретов

Мы рекомендуем использовать OIDC, если это возможно, так как вам не потребуется создавать конфиденциальные и длительные секреты учетных данных для поставщика хранилища и риск их предоставления. После определения доверия с помощью OIDC поставщик облачных хранилищ автоматически выдает маркеры доступа с коротким сроком действия к экземпляр GitHub Enterprise Server, которые автоматически истекают.

Необходимые компоненты

Note

Единственными поставщиками хранилища S3 с поддержкой GitHubподдерживаются Amazon S3 и Шлюз MinIO для NAS.

Существуют другие продукты хранения, совместимые с API S3, которые партнеры GitHub самостоятельно проверяются как работа с GitHub Actions на GitHub Enterprise Server. Дополнительные сведения см. в репозитории GHES служба хранилища Партнеров.

Для продуктов хранения, проверенных с помощью программы партнерства по технологии GitHub , поставщик хранилища отвечает за поддержку и документацию по использованию продукта хранилища с GitHub Actions.

Перед включением GitHub Actions выполните следующие действия:

  • Создайте контейнер Amazon S3 для хранения данных, создаваемых при выполнении рабочих процессов.

  • Ознакомьтесь с требованиями к оборудованию для GitHub Actions. Дополнительные сведения см. в разделе Начало работы с GitHub Actions для сервера GitHub Enterprise.

  • Протокол TLS должен быть настроен для домена GitHub Enterprise Server. Дополнительные сведения см. в разделе Настройка TLS.

    Note

    Настоятельно рекомендуется настроить TLS в GitHub Enterprise Server с сертификатом, подписанным доверенным центром авторизации. Хотя самозаверяющий сертификат можно использовать, необходимо дополнительно настроить локальные средства выполнения тестов, и не рекомендуется использовать сертификат для рабочих сред.

  • Если у вас есть http-прокси-сервер **, настроенный **на GitHub:

  • Необходимо добавить .localhostи 127.0.0.1``::1 в список исключений **** прокси-сервера HTTP (в этом порядке).

  • Если расположение внешнего хранилища не является маршрутизируемым, необходимо также добавить URL-адрес внешнего хранилища в список исключений.

Дополнительные сведения об изменении параметров прокси-сервера см. в разделе Настройка сервера веб-прокси исходящего трафика.

  • Если вы используете OIDC для подключения к поставщику хранилища, необходимо предоставить следующие URL-адреса службы маркеров OIDC на экземпляр GitHub Enterprise Server в общедоступном Интернете:

    https://HOSTNAME/_services/token/.well-known/openid-configuration
    https://HOSTNAME/_services/token/.well-known/jwks
    

    Это гарантирует, что поставщик хранилища может связаться с экземпляр GitHub Enterprise Server для проверки подлинности.

Включение GitHub Actions с Amazon S3 с помощью OIDC (рекомендуется)

Чтобы настроить GitHub Enterprise Server для использования OIDC с контейнером Amazon S3, необходимо сначала создать поставщика Amazon OIDC, а затем создать роль управления удостоверениями и доступом (IAM) и, наконец, настроить GitHub Enterprise Server для доступа к контейнеру S3.

1. Создание поставщика Amazon OIDC

  1. Получите отпечаток для экземпляр GitHub Enterprise Server.

    1. Используйте следующую команду OpenSSL, чтобы получить отпечаток SHA1 для экземпляр GitHub Enterprise Server, заменив HOSTNAME общедоступным именем узла экземпляр GitHub Enterprise Server

      Shell
      openssl s_client -connect HOSTNAME:443 < /dev/null 2>/dev/null | openssl x509 -fingerprint -noout -sha1 -in /dev/stdin
      

      Например:

      openssl s_client -connect my-ghes-host.example.com:443 < /dev/null 2>/dev/null | openssl x509 -fingerprint -noout -sha1 -in /dev/stdin
      

      Команда возвращает отпечаток в следующем формате:

      SHA1 Fingerprint=AB:12:34:56:78:90:AB:CD:EF:12:34:56:78:90:AB:CD:EF:12:34:56
      
    2. Удалите двоеточие (:) из значения отпечатка и сохраните значение для последующего использования.

      Например, отпечаток значения, возвращаемого на предыдущем шаге:

      AB1234567890ABCDEF1234567890ABCDEF123456
      
  2. Используя ИНТЕРФЕЙС командной строки AWS, используйте следующую команду, чтобы создать поставщик OIDC для экземпляр GitHub Enterprise Server. Замените HOSTNAME общедоступным именем узла для экземпляр GitHub Enterprise Serverи THUMBPRINT значением отпечатка из предыдущего шага.

    Shell
    aws iam create-open-id-connect-provider \
      --url https://HOSTNAME/_services/token \
      --client-id-list "sts.amazonaws.com" \
      --thumbprint-list "THUMBPRINT"
    

    Например:

    Shell
    aws iam create-open-id-connect-provider \
      --url https://my-ghes-host.example.com/_services/token \
      --client-id-list "sts.amazonaws.com" \
      --thumbprint-list "AB1234567890ABCDEF1234567890ABCDEF123456"
    

    Дополнительные сведения об установке AWS CLI см. в документации по Amazon.

    Warning

    Если сертификат для экземпляр GitHub Enterprise Server изменится в будущем, необходимо обновить значение отпечатка в поставщике Amazon OIDC для продолжения работы доверия OIDC.

2. Создание роли IAM

  1. Откройте консоль AWS и перейдите в службу управления удостоверениями и доступом (IAM).

  2. В меню слева в разделе "Управление доступом" щелкните "Роли", а затем нажмите кнопку "Создать роль".

  3. На странице "Выбор доверенной сущности" введите следующие параметры:

    • Для параметра "Тип доверенной сущности" щелкните веб-удостоверение.
    • В разделе "Поставщик удостоверений" используйте раскрывающееся меню "Выбор поставщика " и выберите поставщик OIDC, созданный на предыдущих шагах. Оно должно называться HOSTNAME/_services/tokenименем HOSTNAME общедоступного узла для экземпляр GitHub Enterprise Server.
    • Для параметра "Аудитория" выберите sts.amazonaws.com.
  4. Нажмите кнопку Далее.

  5. На странице "Добавление разрешений" используйте фильтр для поиска и выбора AmazonS3FullAccess политики.

  6. Нажмите кнопку Далее.

  7. На странице "Имя, проверка и создание" введите имя роли и нажмите кнопку "Создать роль".

  8. На странице "Роли" IAM выберите только что созданную роль.

  9. В разделе "Сводка" обратите внимание на значение ARN для роли, так как это необходимо позже.

  10. Перейдите на вкладку "Отношения доверия", а затем нажмите кнопку "Изменить политику доверия".

  11. Измените политику доверия, чтобы добавить новое sub утверждение. Значение должно Condition соответствовать следующему примеру, заменив HOSTNAME общедоступным именем узла экземпляр GitHub Enterprise Server:

    ...
    "Condition": {
      "StringEquals": {
        "HOSTNAME/_services/token:aud": "sts.amazonaws.com",
        "HOSTNAME/_services/token:sub": "HOSTNAME"
      }
    }
    ...
    

    Например:

    ...
    "Condition": {
      "StringEquals": {
        "my-ghes-host.example.com/_services/token:aud": "sts.amazonaws.com",
        "my-ghes-host.example.com/_services/token:sub": "my-ghes-host.example.com"
      }
    }
    ...
    
  12. Щелкните " Обновить политику".

3. Настройка GitHub Enterprise Server для подключения к Amazon S3 с помощью OIDC

  1. В учетной записи администратора GitHub Enterprise Server, в правом верхнем углу любой страницы щелкните .

  2. Если вы еще не на странице "Администратор сайта", в левом верхнем углу щелкните Администратор сайта.

  3. На боковой панели " "Администратор сайта" щелкните Консоль управления.

  4. На боковой панели "Параметры" нажмите кнопку "Действия".

  5. В разделе "GitHub Actions" выберите "Включить действия GitHub".

  6. В разделе "Артефакт и журнал служба хранилища" рядом с "Amazon S3" нажмите кнопку "Настройка".

  7. В разделе "Проверка подлинности" выберите OpenID Connect (OIDC) и введите значения для хранилища:

    • Контейнер AWS S3: имя контейнера S3.
    • Роль AWS: ARN для роли, созданной в предыдущих процедурах. Например, arn:aws:iam::123456789:role/my-role-name.
    • Регион AWS: регион AWS для контейнера. Например, us-east-1.
  8. Нажмите кнопку "Проверить параметры хранилища"**, **чтобы проверить параметры хранилища.

    Если есть ошибки, проверяющие параметры хранилища, проверка параметры с поставщиком хранилища и повторите попытку.

  9. На боковой панели "Параметры" нажмите кнопку "Сохранить параметры".

    Note

    Сохранение параметров в Консоль управления перезапускает системные службы, что может привести к простоям, видимым пользователем.

  10. Подождите завершения запуска конфигурации.

Включение GitHub Actions с хранилищем Amazon S3 с помощью ключей доступа

  1. С помощью консоли AWS или CLI создайте ключ доступа для контейнера хранилища. GitHub Actions требуются следующие разрешения для ключа доступа, который будет обращаться к контейнеру:

    • s3:PutObject
    • s3:GetObject
    • s3:ListBucketMultipartUploads
    • s3:ListMultipartUploadParts
    • s3:AbortMultipartUpload
    • s3:DeleteObject
    • s3:ListBucket
    • kms:GenerateDataKey (если включено шифрование Key Management Service (KMS))
    • kms:Decrypt (если включено шифрование Key Management Service (KMS))

    Дополнительные сведения об управлении ключами доступа AWS см. в документации по управлению удостоверениями и доступом AWS.

  2. В учетной записи администратора GitHub Enterprise Server, в правом верхнем углу любой страницы щелкните .

  3. Если вы еще не на странице "Администратор сайта", в левом верхнем углу щелкните Администратор сайта.

  4. На боковой панели " "Администратор сайта" щелкните Консоль управления.

  5. На боковой панели "Параметры" нажмите кнопку "Действия".

  6. В разделе "GitHub Actions" выберите "Включить действия GitHub".

  7. В разделе "Артефакт и журнал служба хранилища" рядом с "Amazon S3" нажмите кнопку "Настройка".

  8. В разделе "Проверка подлинности" выберите "Учетные данные" и введите сведения о контейнере хранилища:

    • URL-адрес службы AWS. URL-адрес службы для контейнера. Например, если контейнер S3 был создан в регионе us-west-2, это значение должно быть https://s3.us-west-2.amazonaws.com.

      Дополнительные сведения см. в документации по AWS.

    • Контейнер AWS S3: имя контейнера S3.

    • Ключ доступа AWS S3 и секретный ключ AWS S3: идентификатор ключа доступа AWS и секретный ключ для контейнера.

  9. Нажмите кнопку "Проверить параметры хранилища"**, **чтобы проверить параметры хранилища.

    Если есть ошибки, проверяющие параметры хранилища, проверка параметры с поставщиком хранилища и повторите попытку.

  10. На боковой панели "Параметры" нажмите кнопку "Сохранить параметры".

    Note

    Сохранение параметров в Консоль управления перезапускает системные службы, что может привести к простоям, видимым пользователем.

  11. Подождите завершения запуска конфигурации.

Следующие шаги

После успешного завершения выполнения конфигурации GitHub Actions будет включен на GitHub. Для следующих действий, таких как управление разрешениями доступа GitHub Actions и добавление локальных средств выполнения, вернитесь в Начало работы с GitHub Actions для сервера GitHub Enterprise.