簡體   English   中英

如何確保 GCP 啟動腳本使用正確的服務帳戶?

[英]How do I ensure GCP start-script uses the correct service account?

我正在 GCP 的 Compute Engine 中創建一個 VM,其服務帳戶有權從特定的 Cloud Storage 存儲桶中讀取,該存儲桶包含一些可能包含敏感信息(例如 TLS 證書)的常見配置。 但是,當我的啟動腳本被執行時,它被拒絕訪問存儲桶,因為它使用的是 Google Compute Engine 默認服務帳戶,而不是我配置我的 VM 使用的服務帳戶。 有人可以幫我弄清楚如何確保啟動腳本使用正確的服務帳戶嗎?

=============編輯=============

不確定這會有多大幫助,但這是失敗的木偶代碼,我不能/不會提供所有木偶代碼。 實例啟動時調用的實際啟動腳本是sudo puppet apply --verbose /opt/puppet/manifests/opensearch.pp >/var/log/puppetlabs/puppet/startup.log 2>&1 請注意,我已經確認 puppet 沒有對服務帳戶執行任何特殊操作。 但是 puppet 始終使用默認服務帳戶,並且無法下載證書。 如果我 SSH 進入實例並手動運行相同的命令,它每次都有效。

      exec { 'download_ssl_certs':
        command => "/snap/bin/gsutil cp -r gs://${opensearch::secrets_bucket}/${opensearch::cluster}/* ${opensearch::opensearch_path}/config/",
        notify  => Exec['ssl_certs_chown']
      }

      exec { 'ssl_certs_chown':
        command     => "/bin/chown -R ${opensearch::service_user}:${opensearch::service_group} ${opensearch::opensearch_path}/config",
        onlyif      => "/bin/ls -lhR ${opensearch::opensearch_path}/config | /bin/grep -i root | grep -v ${opensearch::service_user}",
        refreshonly => true,
        notify => Service['opensearch'],
      }

例子:

gcloud compute instances create example-vm \
    --service-account 123-my-sa@my-project-123.iam.gserviceaccount.com \
    --scopes https://www.googleapis.com/auth/cloud-platform 

為實例創建和啟用服務帳戶

由於服務帳戶是元數據的一部分,您可以使用啟動腳本訪問元數據。

從 Linux 啟動腳本訪問元數據

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM