Проверка, что используемая учетная запись службы не является учетной записью по умолчанию
Описание
Учетные записи служб (service accounts) используются для автоматизации задач и предоставления приложению необходимых прав доступа к ресурсам. Использование учетных записей по умолчанию может представлять серьезную угрозу безопасности, так как они часто имеют известные настройки и могут быть легко скомпрометированы. Это требование подразумевает, что все учетные записи служб должны быть настроены с уникальными, безопасными учетными данными и правами доступа.
Почему это важно
- Снижение рисков безопасности: Учетные записи по умолчанию могут быть известны злоумышленникам, что делает их уязвимыми для атак.
 - Улучшение контроля доступа: Уникальные учетные записи служб позволяют более точно настраивать права доступа, что помогает следовать принципу наименьших привилегий.
 - Соответствие стандартам безопасности: Многие стандарты безопасности требуют использования уникальных учетных записей для автоматизированных процессов.
 
Способы реализации с примерами
Создание уникальных учетных записей служб: При настройке учетных записей служб всегда создавайте уникальные учетные записи с индивидуальными правами доступа.
Пример:
# Создание новой учетной записи службы в Google Cloud
gcloud iam service-accounts create my-custom-service-account \
    --description="My custom service account" \
    --display-name="My Custom Service Account"
Настройка прав доступа: Убедитесь, что учетные записи служб имеют только те права доступа, которые необходимы для выполнения их задач.
Пример:
# Присвоение роли учетной записи службы
gcloud projects add-iam-policy-binding my-project \
    --member="serviceAccount:my-custom-service-account@my-project.iam.gserviceaccount.com" \
    --role="roles/storage.objectViewer"
Регулярный аудит учетных записей служб: Проводите регулярные проверки и аудит учетных записей служб, чтобы убедиться, что они не являются учетными записями по умолчанию и имеют соответствующие права доступа.
Пример:
def audit_service_accounts():
    service_accounts = get_service_accounts()  # Функция для получения учетных записей служб
    for account in service_accounts:
        if is_default_account(account):  # Проверка на учетную запись по умолчанию
            print(f"Warning: {account} is a default service account.")
Использование безопасных методов аутентификации: Убедитесь, что учетные записи служб используют безопасные методы аутентификации, такие как ключи API или OAuth 2.0.
Пример:
from google.oauth2 import service_account
credentials = service_account.Credentials.from_service_account_file(
    'path/to/service-account.json'
)
Примеры уязвимого кода
# Пример уязвимого кода на Python
def connect_to_service():
    # Использование учетной записи по умолчанию
    service_account = "default_service_account"
    # Логика подключения к сервису
Проблема: В этом коде используется учетная запись по умолчанию, что делает систему уязвимой для атак.
Причины, к которым может привести несоблюдение требования
- Несанкционированный доступ: Злоумышленники могут использовать известные учетные записи по умолчанию для получения доступа к системе.
 - Уязвимости безопасности: Учетные записи по умолчанию могут иметь избыточные права доступа, что увеличивает риск компрометации.
 - Проблемы с управлением: Учетные записи по умолчанию могут затруднить управление доступом и аудит.
 
Рекомендации
- Всегда создавайте уникальные учетные записи служб с индивидуальными правами доступа.
 - Регулярно проводите аудит учетных записей служб и проверяйте их на наличие учетных записей по умолчанию.
 - Используйте безопасные методы аутентификации для учетных записей служб.
 - Обучайте сотрудников важности использования уникальных учетных записей и управления доступом.