Получение

Примечание

В настоящее время Atomist находится в стадии Ранний доступ. Функции и API могут быть изменены.

Чтобы начать работу с Atomist, вам потребуется:

  • Подключите Atomist к вашему реестру контейнеров

  • Связать ваши образы контейнеров с их Git-источником

Прежде чем вы сможете начать настройку, вам нужен Docker ID. Если у вас его ещё нет, вы можете зарегистрироваться здесь.

Подключение реестра контейнеров

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

Примечание

Использование Docker Hub? 🐳

Если вы используете Docker Hub в качестве реестра контейнеров, вы можете пропустить данный шаг и сразу перейти к привязка образов к источнику Git. Atomist легко интегрируется с вашими организациями Docker Hub.

Amazon

При настройке интеграции Amazon Elastic Container Registry (ECR) с Atomist необходимы следующие ресурсы AWS:

  • Роль Identity Access Management (IAM) только для чтения, чтобы Atomist мог получает доступ к реестру контейнеров

  • Amazon EventBridge, для уведомления Atomist о перемещенных и удаленных образах

В этой процедуре используются предварительно определённые шаблоны CloudFormation для создания необходимой роли IAM и Amazon EventBridge. Данный шаблон защищает вас от растерянный депутат атакует, предоставляя уникальный ExternalId вместе с соответствующим условием в операторе роли IAM.

  1. Перейдите на сайт https://dso.docker.com и войти в систему, используя свои учетные данные Docker ID.

  2. Перейдите на вкладку Integrations и выбрать Configure рядом с интеграцией Elastic Container Registry.

  3. Заполнить все поля, кроме Trusted Role ARN. Идентификатор доверенной роли становится известен только после применения шаблона CloudFormation.

    Выбрать основные учетные данные для защиты конечной точки, которую AWS использует для уведомления Atomist. URL и базовые учетные данные аутентификации являются параметрами шаблона CloudFormation.

  4. Теперь создаёт стек CloudFormation. Перед созданием стека AWS попросит вас ввести три параметра.

    • Url: конечная точка API скопирована из Atomist

    • Username, Password: основные учетные данные аутентификации для конечной точки. Должны совпадать с теми, что вы ввели в рабочем пространстве Atomist.

Используйте следующие кнопки Launch Stack, чтобы начать просмотр деталей в вашей учетной записи AWS.

Примечание

Перед созданием стека AWS попросит подтвердить, что для создания этого стека требуется возможность. Данный стек создаёт роль, которая предоставит Atomist доступ только для чтения к ресурсам ECR.

confirm

Регион

ecr-integration.template

восток-1

Запуск стека

восток-2

Запуск стека

запад-1

Запуск стека

запад-2

Запуск стека

евро-запад-1

Запуск стека

евро-запад-2

Запуск стека

евро-запад-3

Запуск стека

eu-central-1

Запуск стека

ca-central-1

Запуск стека

ап-юго-восток-2

Запуск стека

  1. После создания стека копирует значение для ключа AssumeRoleArn из табы Outputs в AWS.

AWS stack creation output
  1. Вставляет скопированное значение AssumeRoleArn в поле Trusted Role ARN на странице конфигурации Atomist.

  2. Выбрать Сохраняет конфигурацию.

Atomist проверяет соединение с вашим реестром ECR. При успешном подключении рядом с интеграцией отображается зеленая галочка.

integration list showing a successful ECR integration

GitHub

Чтобы интегрировать Atomist с GitHub Container Registry, подключите свой аккаунт GitHub и входит персональный токен доступа для Atomist, который будет использоваться при извлечении образов контейнеров.

  1. Перейдите на сайт https://dso.docker.com и войти в систему, используя свои учетные данные Docker ID.

  2. Подключите учетную запись GitHub, как указано в инструкции Страница приложения на GitHub.

  3. Открывает вкладку Integrations и выбрать Configure рядом с GitHub Container Registry в списке.

  4. Заполнить поля и выбрать Сохраняет конфигурацию.

Atomist требует Токен личного доступа для подключения образов к частным репозиториям. Маркер должен иметь область read:packages.

Оставьте поле Персональный маркер доступа пустым, если вы хотите индексировать только образы в публичных хранилищах.

Google

Настройка интеграции Atomist с Google Container Registry и Google Artifact Registry включает в себя:

  • Создаёт учетную запись службы и предоставьте ей роль доступа только для чтения.

  • Создание подписки PubSub на тему gcr для наблюдения за активностью в реестре.

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

  1. Устанавливает следующие переменные окружения. Вы будете использовать их в следующих шагах при настройке ресурсов Google Cloud, используя gcloud CLI.

    export SERVICE_ACCOUNT_ID="atomist-integration" # can be anything you like
    export PROJECT_ID="YOUR_GCP_PROJECT_ID"
    
  2. Создаёт учетную запись службы.

    gcloud iam service-accounts create ${SERVICE_ACCOUNT_ID} \
            --project ${PROJECT_ID} \
            --description="Atomist Integration Service Account" \
            --display-name="Atomist Integration"
    
  3. Предоставьте учетной записи службы доступ только для чтения к реестру артефактов.

Имя роли отличается в зависимости от того, используете ли вы реестр артефактов или реестр контейнеров:

  • roles/artifactregistry.reader для реестра артефактов Google

  • roles/object.storageViewer для Google Container Registry

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
        --project ${PROJECT_ID} \
        --member="serviceAccount:${SERVICE_ACCOUNT_ID}@${PROJECT_ID}.iam.gserviceaccount.com" \
        --role="roles/artifactregistry.reader" # change this if you use GCR
  1. Предоставьте доступ учетной записи службы к Atomist.

gcloud iam service-accounts add-iam-policy-binding "${SERVICE_ACCOUNT_ID}@${PROJECT_ID}.iam.gserviceaccount.com" \
        --project ${PROJECT_ID} \
        --member="serviceAccount:[email protected]" \
        --role="roles/iam.serviceAccountTokenCreator"
  1. Перейдите на dso.docker.com и войти в систему, используя свои учетные данные Docker ID.

  2. Перейдите на вкладку Integrations и выбрать Configure рядом с интеграцией Google Artifact Registry.

  3. Заполнить следующие поля:

    • Идентификатор проекта — это PROJECT_ID, использованный в предыдущих шагах.

    • Учетная запись службы: Адрес электронной почты учетной записи службы, созданной на шаге 2.

  4. Выбрать Сохраняет конфигурацию. Atomist протестирует соединение. Зеленые галочки означают успешное подключение.

GCP configuration successful

Затем создаёт новую подписку PubSub на тему gcr в реестре. Эта подписка будет уведомлять Atomist о новых или удаленных образов в реестре.

  1. Копирует URL-адрес в поле Events Webhook в буфер обмена. Это будет PUSH_ENDPOINT_URI для подписки PubSub.

  2. Определяет следующие три значения переменных, в дополнение к PROJECT_ID и SERVICE_ACCOUNT_ID, указанным ранее:

    • PUSH_ENDPOINT_URL: URL webhook скопирован из рабочего пространства Atomist.

    • SERVICE_ACCOUNT_EMAIL: адрес счета обслуживания; комбинация идентификатора счета обслуживания и идентификатора проекта.

    • SUBSCRIPTION: имя PubSub (может быть любым).

    PUSH_ENDPOINT_URI={COPY_THIS_FROM_ATOMIST}
    SERVICE_ACCOUNT_EMAIL="${SERVICE_ACCOUNT_ID}@${PROJECT_ID}.iam.gserviceaccount.com"
    SUBSCRIPTION="atomist-integration-subscription"
    
  3. Создаёт PubSub для темы gcr.

    gcloud pubsub subscriptions create ${SUBSCRIPTION} \
      --topic='gcr' \
      --push-auth-token-audience='atomist' \
      --push-auth-service-account="${SERVICE_ACCOUNT_EMAIL}" \
      --push-endpoint="${PUSH_ENDPOINT_URI}"
    

Когда первая отправка образа будет успешно обнаружен, зеленая галочка на странице интеграции будет означать, что интеграция работает.

JFrog

Atomist может индексировать образы в хранилище JFrog Artifactory с помощью агента мониторинга.

Агент регулярно сканирует настроенные хранилища и отправляет метаданные вновь обнаруженных образов на плоскость данных Atomist.

В следующем примере https://hal9000.atomist.com — это частный реестр, видимый только во внутренней сети.

docker run -ti atomist/docker-registry-broker:latest\
  index-image remote \
  --workspace AQ1K5FIKA \
  --api-key team::6016307E4DF885EAE0579AACC71D3507BB38E1855903850CF5D0D91C5C8C6DC0 \
  --artifactory-url https://hal9000.docker.com \
  --artifactory-repository atomist-docker-local \
  --container-registry-host atomist-docker-local.hal9000.docker.com
  --username admin \
  --password password

Параметр

Описание

workspace

Идентификатор вашего рабочего пространства Atomist.

api-key

Ключ API Atomist.

artifactory-url

Базовый URL-адрес экземпляра Artifactory. Не должен содержать косых черт.

artifactory-repository

Имя реестра контейнеров, за которым нужно следить.

container-registry-host

Имя хоста, связанное с хранилищем Artifactory, содержащим образы, если оно отличается от artifactory-url.

username

Имя пользователя для базовой аутентификации HTTP с Artifactory.

password

Пароль для базовой аутентификации HTTP с Artifactory.

Куда двигаться дальше&?

Atomist теперь отслеживает список материалов, упаковки и уязвимости для ваших образов! Вы можете просмотреть результаты сканирования образа на странице страница обзора образов.

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