Работа с политиками безопасности в Compute Engine API в Python

Я хочу использовать политики безопасности API для облачной платформы Google в Linux в скрипте, написанном на Python.

Сделать это:

Я установил google-api-python-client:

 pip install google-api-python-client

Я сгенерировал и загрузил из GCP эту учетную информацию (закрытый ключ) в формате JSON и экспортировал путь к этому файлу в переменной среды:

export GOOGLE_APPLICATION_CREDENTIALS='[PATH]'

Теперь я сомневаюсь, как правильно использовать google-api-python-client библиотеку для достижения своей цели.

Использование метода addRule в соответствии с документацией я пишу следующий сценарий (конечно, с допустимыми значениями для ключей project и securityPolicy), но когда я его выполняю, хотя интерпретатор не возвращает никаких ошибок, но сценарий не дает ожидаемый эффект:

from googleapiclient import discovery
compute_service = discovery.build('compute', 'v1')
security_policies = compute_service.securityPolicies()
security_policies.addRule(
    project='existed_project_name',
    securityPolicy='existed_security_policy_name',
    body={
        'kind': 'compute#securityPolicyRule',
        'priority': 303,
        'action': 'deny(403)',
        'preview': False,
        'match': {
            'config': {
                'srcIpRanges': [
                    '192.0.2.0/24',
                    '198.51.100.0/24',
                    '203.0.113.0/24'
                ]
            },
            'versionedExpr': 'SRC_IPS_V1'
        }
    }
)

Итак, у меня есть следующие вопросы:

1. Что мне следует улучшить или изменить?

2. Правильно ли мой подход к аутентификации?

Любые идеи?

Можете ли вы описать, что произошло, когда вы выполнили сценарий? Что за неожиданное поведение? Я могу выполнить дополнительные действия по устранению неполадок, а также, если это весь сценарий, я хотел бы воспроизвести поведение. Спасибо   —  person simhumileco    schedule 20.06.2019

Спасибо за ваш ответ и интерес к @SamuelN. Я бы хотел добавить новое правило с этими примерами IP-адресов для Cloud Armor в производственной среде. К сожалению, ничего подобного не происходит, хотя скрипт не возвращает ошибок. Чтобы воспроизвести мою реальную ситуацию, вы можете просто выполнить приведенный выше фрагмент сценария с реальными existed_project_name и existed_security_policy_name (которые я не вставлял здесь по очевидным причинам) и заметить, что сценарий не работает. Вам нужны от меня дополнительные сведения о @SamuelN? Если да, смело спрашивайте. Постараюсь на все ответить.   —  person simhumileco    schedule 21.06.2019

См. также:  В шаблоне строк нельзя использовать восьмеричные escape-последовательности.

Часть аутентификации должна быть в порядке. Чтобы быть уверенным, можете ли вы попробовать Подтвердить аутентификацию [1]? [1]: cloud.google.com/docs/authentication/   —  person simhumileco    schedule 11.07.2019

Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 1
  1. simhumileco

    Вам не хватает .execute() в конце вашего addRule метода

    Итак, ваш код должен выглядеть так:

    from googleapiclient import discovery
    compute_service = discovery.build('compute', 'v1')
    security_policies = compute_service.securityPolicies()
    security_policies.addRule(
        project='existed_project_name',
        securityPolicy='existed_security_policy_name',
        body={
            'kind': 'compute#securityPolicyRule',
            'priority': 303,
            'action': 'deny(403)',
            'preview': False,
            'match': {
                'config': {
                    'srcIpRanges': [
                        '192.0.2.0/24',
                        '198.51.100.0/24',
                        '203.0.113.0/24'
                    ]
                },
                'versionedExpr': 'SRC_IPS_V1'
            }
        }
    ).execute()
    
    
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: