Bitbucket не может загрузить файл ключа облака Google - PullRequest
1 голос
/ 24 марта 2020

Bitbucket не читает мой файл json в кодировке base64 с ключом облачного сервиса Google. Я успешно закодировал и затем расшифровал тот же файл, который Bitbucket пытается декодировать. Но Bitbucket не может сделать это с ошибкой base64: invalid input. Вот полное сообщение об ошибке:

Status: Downloaded newer image for bitbucketpipelines/google-app-engine-deploy:0.6.1
INFO: Setting up environment.
echo "${KEY_FILE}" | base64 -d >> /tmp/key-file.json
base64: invalid input
gcloud auth activate-service-account --key-file /tmp/key-file.json --quiet --verbosity=warning
ERROR: (gcloud.auth.activate-service-account) Could not read json file /tmp/key-file.json: Unterminated string starting at: line 3 column 17 (char 49)
gcloud config set project wowzers --quiet --verbosity=warning
Updated property [core/project].
INFO: Starting deployment to GCP app engine...
gcloud app --quiet deploy app.yaml --version=14 --promote --stop-previous-version --verbosity=debug --quiet --verbosity=warning
ERROR: (gcloud.app.deploy) You do not currently have an active account selected.

Как я понимаю, это не сработает здесь, на "project_id": ". Декодированный файл выглядит следующим образом:

{
  "type": "service_account",
  "project_id": "project-318",
  "private_key_id": "...",
  ...
}

Я попытался передать мой файл ключа в кодировке base64 сначала через переменную среды, а затем через файл. Но с той же ошибкой. Когда он не может извлечь JSON bitbucket пишет эту ошибку: ERROR: (gcloud.auth.activate-service-account) Could not read json file /tmp/key-file.json: No JSON object could be decoded

Ответы [ 2 ]

1 голос
/ 25 марта 2020

Оказывается, что файл ключа из облака Google содержит символы новой строки: \n. Таким образом, файл в кодировке base64 также выглядел так:

HhsUUrAkupWJ6vdesSRHwNhnPpgxByYT7z7HVBEPsrUpjLWdX6TQm4pHNJydsC34F
RvVYyBAedgLhWPPGPvU6UBJww3aNxQnJS95ZvKDBuNr5CNTtAgh6EgsattRrZtawH
fjphVs82UWZZFq3JUeGwGdTs88XWu6ejaPYZknnD94W7pU6Ds8vJHGhAnBw9FtkrA
gjp4UFZN2Yg9KJFSrTfFA6dUsp2dPVN6VzVfpqJzGrxbFBjWQAp4zK5TXhJaN4zDr
.....

Но для того, чтобы передать его в Bitbucket, вам нужно, чтобы все было в одной строке:

HhsUUrAkupWJ6vdesSRHwNhnPpgxByYT7z7HVBEPsrUpjLWdX6TQm4pHNJydsC34FRvVYyBAedgLhWPPGPvU6UBJww3aNxQnJS95ZvKDBuNr5CNTtAgh6EgsattRrZtawHfjphVs82UWZZFq3JUeGwGdTs88XWu6ejaPYZknnD94W7pU6Ds8vJHGhAnBw9FtkrAgjp4UFZN2Yg9KJFSrTfFA6dUsp2dPVN6VzVfpqJzGrxbFBjWQAp4zK5TXhJaN4zDr....

После того, как я удалил вручную Символы новой строки дали сообщение об успехе: Activated service account credentials for: [project]

0 голосов
/ 25 марта 2020

Могу ли я предложить использовать KMS (Служба управления ключами) в GCP. Расшифровать базу 64 очень легко, и в KMS вам потребуется соответствующая роль пользователя, чтобы расшифровать ее соответствующим образом. Шаги для использования KMS приведены ниже:

KEYRING=kubernetes-secrets
KEY=generic-type-encryption-key

gcloud kms keyrings create $KEYRING --location asia-east2
gcloud kms keys create $KEY --location asia-east2 \
                            --keyring $KEYRING \
                            --purpose encryption

gcloud kms encrypt --location asia-east2 \
                       --keyring $KEYRING \
                       --key $KEY \
                       --plaintext-file example.txt \
                       --ciphertext-file encrypted.example.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...