Wir verwenden ein Dienstkonto, um unsere App mithilfe von Travis in App Engine zu implementieren.App Engine bereitstellen: Berechtigungen Fehler beim Abrufen der Anwendung
Auf jeder zusammengeführten PR zieht Travis den Code aus unserem GitHub-Repository und zieht eine Docker image, die das Google Cloud SDK enthält und den Befehl gcloud app deploy
ausführt. Wir verwenden ein Dienstkonto, um die Bereitstellung mit der Rolle "Projektinhaber" durchzuführen.
Alles funktionierte gut, bis ich einen neuen Dienst zum Projekt hinzugefügt hat, der die Generierung und Erneuerung von SSL-Zertifikaten automatisiert, zusammen mit einer dispatch.yaml
Datei, um eingehenden Datenverkehr von Let's Encrypt zur Domänenüberprüfung zu routen. Ich musste mehr Berechtigungen hinzufügen, um die SSL-Zertifikate zu aktualisieren, die wir für unsere benutzerdefinierte Domäne verwenden. Ich habe das aktuelle Dienstkonto entfernt und ein neues mit einem neuen privaten Schlüssel erstellt. Ich habe eine neue Rolle mit den erforderlichen Berechtigungen zum Aktualisieren und Anzeigen von SSL-Zertifikaten zusätzlich zu den vorherigen Berechtigungen erstellt (alle appengine.*
Berechtigungen). Ich habe die neue Rolle und die Rolle des Project Owners dem neuen Konto zugewiesen. Nach diesen Änderungen schlägt der Einsatz mit dem folgenden Fehler, wenn den deploy
Befehl ausführen:
Permissions error fetching application [apps/hollowverse-c9cad]. Please make sure you are using the correct project ID and that you have permission to view applications on the project.
ich das gleiche Dienstkonto auf meinem lokalen Rechner mit Protokollebene auf Debug festgelegt verwendet. Ich habe diesen Fehler:
DEBUG: HttpError accessing <https://appengine.googleapis.com/v1/apps/hollowverse-c9cad?alt=json>: response: <{'status': '403', 'content-length': '335', 'x-xss-protection': '1; mode=block', 'x-content-type-options': 'nosniff', 'transfer-encoding': 'chunked', 'vary': 'Origin, X-Origin, Referer', 'server': 'ESF', '-content-encoding': 'gzip', 'cache-control': 'private', 'date': 'Wed, 02 Aug 2017 14:33:50 GMT', 'x-frame-options': 'SAMEORIGIN', 'alt-svc': 'quic=":443"; ma=2592000; v="39,38,37,36,35"', 'content-type': 'application/json; charset=UTF-8'}>, content <{
"error": {
"code": 403,
"message": "Operation not allowed",
"status": "PERMISSION_DENIED",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ResourceInfo",
"resourceType": "gae.api",
"description": "The \"appengine.applications.get\" permission is required."
}
]
}
}
>
DEBUG: (gcloud.beta.app.deploy) Permissions error fetching application [apps/hollowverse-c9cad]. Please make sure you are using the correct project ID and that you have permission to view applications on the project.
Die Beschreibung sagt, dass appengine.applications.get
erforderlich ist, die Bereitstellung durchzuführen. Mit Blick auf die erteilten Berechtigungen auf die Rolle auf das Konto Travis zugewiesen wir bereitstellen verwenden, wird appengine.applications.get
eindeutig erteilt:
ich jede mögliche App Engine und Projekt Rolle auf dem Konto zugewiesen, aber Bereitstellung fehlschlägt nach wie vor mit der gleiche Fehler. Die Verwendung des Standarddienstkontos, das automatisch für jedes neue Projekt auf GCP erstellt wird, scheint jedoch zu funktionieren.