Cette page s'applique à Apigee, mais pas à Apigee hybrid.
Consultez la documentation d'Apigee Edge.
Ce document explique comment installer et configurer Apigee à partir de la ligne de commande, avec appairage de VPC. Ces étapes s'appliquent aux modèles de tarification par abonnement et par paiement à l'usage, pour les organisations payantes, avec ou sans résidence des données activée.
Résumé des étapes
Les étapes de provisionnement sont les suivantes :
- Étape 1 : Définissez des variables d'environnement : configurez
gcloud
définissez des variables d'environnement. Google Cloud CLI gère l'authentification, la configuration locale, le workflow du développeur et les interactions avec les API Google Cloud. - Étape 2 : Activez les API : Apigee nécessite l'activation de plusieurs API Google Cloud.
- Étape 3 : Créez l'identité du service Apigee : ce compte de service est utilisé par les bibliothèques clientes Google Cloud pour s'authentifier auprès des API Google Cloud.
- Étape 4 : Configurez la mise en réseau des services : la mise en réseau des services automatise la configuration de la connectivité privée (à l'aide de l'appairage de réseaux VPC) entre votre réseau et Apigee.
- Étape 5 : Créez une organisation : une organisation Apigee (parfois appelée "org") est le conteneur de niveau supérieur dans Apigee. Elle comprend tous vos environnements et groupes d'environnement, vos utilisateurs, vos proxy d'API et les ressources associées.
- Étape 6 : Créez une instance d'exécution : votre instance ou environnement d'exécution correspond à l'emplacement de stockage de votre projet et des services associés. Il fournit le point de terminaison aux utilisateurs pour vos services.
- Étape 7 : Créez un environnement : un proxy d'API doit être déployé sur un environnement et ajouté à un groupe d'environnements pour que les API exposées soient accessibles sur le réseau.
- Étape 8 : Configurez le routage : autorisez l'accès externe ou seulement l'accès interne à votre API.
- Étape 9 : Déployez un exemple de proxy : testez le provisionnement en déployant et en appelant un proxy d'API.
Étape 1 : Définissez des variables d'environnement
Configurez gcloud
et définissez les variables d'environnement à utiliser dans les étapes suivantes :
- Assurez-vous de respecter les exigences de configuration répertoriées dans la section Avant de commencer.
- Le SDK Cloud doit être installé. Si vous devez l'installer, consultez la page Installer le SDK Cloud.
- Initialisez le SDK Cloud comme décrit sur la page Initialiser gcloud CLI ou vérifiez que le projet Google Cloud que vous avez créé dans la section Prérequis est le projet par défaut pour
gcloud
. - Définissez les variables d'environnement suivantes dans votre terminal de commande.
Sélectionnez l'onglet correspondant au type d'organisation dont vous avez besoin : Sans résidence des données ou avec Résidence des données :
AUTH="$(gcloud auth print-access-token)"
PROJECT_ID="
YOUR_PROJECT_ID "PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
RUNTIME_LOCATION="
YOUR_RUNTIME_LOCATION "ANALYTICS_REGION="
YOUR_ANALYTICS_REGION "BILLING_TYPE="
YOUR_BILLING_TYPE "Où :
-
AUTH définit l'en-tête
Authentication
avec un jeton de support. Vous utiliserez cet en-tête lors de l'appel des API Apigee. Notez que le jeton expire après un certain temps. Si c'est le cas, il vous suffit de le générer à nouveau en exécutant la même commande. Pour en savoir plus, consultez la page de référence sur la commande print-access-token. - PROJECT_ID est l'ID du projet Cloud que vous avez créé dans la section Prérequis.
- PROJECT_NUMBER est le numéro du projet Cloud que vous avez créé dans la section Prérequis.
-
RUNTIME_LOCATION est l'emplacement physique dans lequel se trouve l'instance Apigee que vous allez créer plus tard. Pour obtenir la liste des emplacements d'exécution disponibles, consultez la section Emplacements Apigee.
-
ANALYTICS_REGION est l'emplacement physique dans lequel vous stockerez les données d'analyse Apigee. Pour obtenir la liste des régions Apigee API Analytics disponibles, consultez la page Emplacements Apigee.
RUNTIME_LOCATION et ANALYTICS_REGION peuvent se trouver dans la même région, mais pas nécessairement.
-
BILLING_TYPE est le type de facturation pour l'organisation que vous créez. Les valeurs possibles sont les suivantes :
PAYG
pour les organisations utilisant le Pay-as-you-go.SUBSCRIPTION
pour les organisations avec abonnement.
AUTH="$(gcloud auth print-access-token)"
PROJECT_ID="
YOUR_PROJECT_ID "PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
RUNTIME_LOCATION="
YOUR_RUNTIME_LOCATION "CONTROL_PLANE_LOCATION="
YOUR_CONTROL_PLANE_LOCATION "CONSUMER_DATA_REGION="
YOUR_CONSUMER_DATA_REGION "BILLING_TYPE="
YOUR_BILLING_TYPE "Où :
-
AUTH définit l'en-tête
Authentication
avec un jeton de support. Vous utiliserez cet en-tête lors de l'appel des API Apigee. Notez que le jeton expire après un certain temps. Si c'est le cas, il vous suffit de le générer à nouveau en exécutant la même commande. Pour en savoir plus, consultez la page de référence sur la commande print-access-token. - PROJECT_ID est l'ID du projet Cloud que vous avez créé dans la section Prérequis.
- PROJECT_NUMBER est le numéro du projet Cloud que vous avez créé dans la section Prérequis.
-
RUNTIME_LOCATION est l'emplacement physique dans lequel se trouve l'instance Apigee que vous allez créer plus tard. Pour obtenir la liste des emplacements d'exécution disponibles, consultez la section Emplacements Apigee.
L'emplacement d'exécution doit se trouver dans l'emplacement du plan de contrôle. - CONTROL_PLANE_LOCATION est l'emplacement physique dans lequel les données du plan de contrôle Apigee seront stockées. Pour obtenir la liste des emplacements du plan de contrôle disponibles, consultez la section Emplacements Apigee.
- CONSUMER_DATA_REGION est une sous-région de la région du plan de contrôle. Vous devez spécifier les paramètres CONTROL_PLANE_LOCATION et CONSUMER_DATA_REGION. Pour obtenir la liste des régions de données client disponibles, consultez la section Emplacements Apigee.
-
BILLING_TYPE est le type de facturation pour l'organisation que vous créez. Les valeurs possibles sont les suivantes :
PAYG
pour les organisations utilisant le Pay-as-you-go.SUBSCRIPTION
pour les organisations avec abonnement.
-
AUTH définit l'en-tête
- (Facultatif) Vérifiez votre travail en répercutant les valeurs que vous venez de définir. Notez que lorsque vous souhaitez utiliser une variable dans vos commandes, faites précéder le nom de la variable d'un signe dollar ($).
echo $AUTH
echo $PROJECT_ID
echo $PROJECT_NUMBER
echo $RUNTIME_LOCATION
echo $ANALYTICS_REGION
echo $BILLING_TYPE
Les réponses à vos commandes
echo
doivent se présenter comme suit :YOUR_TOKEN my-cloud-project 1234567890 us-west1 us-west1 SUBSCRIPTIONecho $AUTH
echo $PROJECT_ID
echo $PROJECT_NUMBER
echo $RUNTIME_LOCATION
echo $CONTROL_PLANE_LOCATION
echo $CONSUMER_DATA_REGION
echo $BILLING_TYPE
Les réponses à vos commandes
echo
doivent se présenter comme suit :YOUR_TOKEN my-cloud-project 1234567890 us-west1 us us-west1 SUBSCRIPTION
Étape 2 : Activez les API
Autorisations requises pour cette tâche
Vous pouvez attribuer à l'approvisionneur Apigee un rôle prédéfini qui inclut les autorisations nécessaires pour effectuer cette tâche, ou définir des autorisations plus précises selon le principe du moindre privilège. Consultez les sections Rôles prédéfinis et Autorisations d'activation des API.
-
Apigee requiert l'activation de plusieurs API Google Cloud. Activez-les en exécutant la commande
services enable
suivante :gcloud services enable apigee.googleapis.com \ servicenetworking.googleapis.com \ compute.googleapis.com \ cloudkms.googleapis.com --project=$PROJECT_ID
(Facultatif) Pour vérifier votre travail, utilisez la commande
services list
pour afficher toutes les API activées :gcloud services list
La réponse affiche tous les services activés, y compris les API que vous venez d'activer.
Étape 3 : Créez l'agent de service Apigee
-
Créez l'identité du service Apigee :
gcloud beta services identity create --service=apigee.googleapis.com \ --project=$PROJECT_ID
Vérifiez que l'agent a bien été créé. La réponse doit présenter le nom de l'agent au format suivant :
service-PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com
. par exemple :Service identity created: service-1234567890@gcp-sa-apigee.iam.gserviceaccount.com
Étape 4 : Configurez la mise en réseau des services
Au cours de cette étape, vous allez allouer une paire de plages d'adresses IP (une plage CIDR /22 et /28) à Apigee, puis effectuer l'appairage de VPC entre votre réseau et le réseau d'Apigee. Chaque instance Apigee nécessite une plage CIDR /22 et /28 sans chevauchement. Les adresses IP de cette plage CIDR sont attribuées au plan d'exécution Apigee. Par conséquent, il est important que la plage soit réservée à Apigee et qu'elle ne soit pas utilisée par d'autres applications dans votre réseau VPC. Pour plus d'informations et des considérations importantes, consultez la page Comprendre les plages d'appairage.
Notez que vous créez une plage d'adresses IP réseau suffisante pour une seule instance Apigee. Si vous envisagez de créer des instances Apigee supplémentaires, vous devez répéter cette étape pour chacune d'elles. Les plages ne peuvent pas être partagées entre plusieurs instances. Consultez également la section Étendre Apigee dans plusieurs régions.
Autorisations requises pour cette tâche
Vous pouvez attribuer à l'approvisionneur Apigee un rôle prédéfini qui inclut les autorisations nécessaires pour effectuer cette tâche, ou définir des autorisations plus précises selon le principe du moindre privilège. Consultez les pages Rôles prédéfinis et Autorisations de mise en réseau de services.
- Créez les variables d'environnement suivantes :
RANGE_NAME=
YOUR_RANGE_NAME NETWORK_NAME=
YOUR_NETWORK_NAME Où :
- RANGE_NAME est le nom de la plage d'adresses IP que vous créez.
Vous pouvez donner le nom que vous voulez à la plage. Par exemple :
google-svcs
- NETWORK_NAME est le nom de la ressource réseau dans laquelle les adresses doivent être réservées.
Google crée un réseau par défaut (nommé
default
) pour chaque nouveau projet afin que vous puissiez l'utiliser. Toutefois, Google ne recommande d'utiliser le réseau par défaut que pour effectuer des tests.
- RANGE_NAME est le nom de la plage d'adresses IP que vous créez.
Vous pouvez donner le nom que vous voulez à la plage. Par exemple :
- Créez une plage d'adresses IP réseau avec une longueur CIDR de /22 :
gcloud compute addresses create $RANGE_NAME \ --global \ --prefix-length=22 \ --description="Peering range for Apigee services" \ --network=$NETWORK_NAME \ --purpose=VPC_PEERING \ --addresses=
OPTIONAL_ADDRESSES \ --project=$PROJECT_IDOù
--addresses
vous permet de spécifier une plage d'adresses, si vous le souhaitez. Par exemple, pour allouer le bloc CIDR192.168.0.0/22
, spécifiez192.168.0.0
pour l'adresse et22
pour la longueur du préfixe. Consultez également la section Créer une allocation d'adresses IP.Si vous ne fournissez pas de paramètre
--addresses
, gcloud sélectionne automatiquement une plage d'adresses disponible.En cas de réussite,
gcloud
renvoie la réponse suivante :Created [https://www.googleapis.com/compute/v1/projects/
PROJECT_NAME /global/addresses/google-svcs].Une fois que vous avez créé une plage d'adresses IP, les adresses sont associées au projet jusqu'à leur publication.
- Vérifiez que la plage d'adresses IP du réseau a été créée avec une longueur CIDR de /22 :
gcloud compute addresses list --global --project=$PROJECT_ID
gcloud compute addresses describe $RANGE_NAME --global --project=$PROJECT_ID
- Créez une plage d'adresses IP réseau avec une longueur CIDR de /28 : Cette plage est obligatoire. Elle est utilisée par Apigee à des fins de dépannage et ne peut être ni personnalisée ni modifiée.
gcloud compute addresses create google-managed-services-support-1 \ --global \ --prefix-length=28 \ --description="Peering range for supporting Apigee services" \ --network=$NETWORK_NAME \ --purpose=VPC_PEERING \ --addresses=
OPTIONAL_ADDRESSES \ --project=$PROJECT_IDOù
--addresses
vous permet de spécifier une plage d'adresses, si vous le souhaitez. Par exemple, pour allouer le bloc CIDR192.168.0.0/28
, spécifiez192.168.0.0
pour l'adresse et28
pour la longueur du préfixe. Consultez également la section Créer une allocation d'adresses IP.Si vous ne fournissez pas de paramètre
--addresses
, gcloud sélectionne automatiquement une plage d'adresses disponible. - Vérifiez que la plage d'adresses IP du réseau a été créée avec une longueur CIDR de /28 :
gcloud compute addresses list --global --project=$PROJECT_ID
gcloud compute addresses describe google-managed-services-support-1 --global \ --project=$PROJECT_ID
- Connectez vos services au réseau à l'aide de la commande suivante :
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --network=$NETWORK_NAME \ --ranges=$RANGE_NAME,google-managed-services-support-1 \ --project=$PROJECT_ID
Cette opération peut prendre plusieurs minutes. En cas de réussite,
gcloud
renvoie la réponse suivante, où OPERATION_ID correspond à l'UUID de l'opération de longue durée (LRO).Operation "operations/
OPERATION_ID " finished successfully. - Après quelques minutes, vérifiez si l'appairage de VPC a réussi :
gcloud services vpc-peerings list \ --network=$NETWORK_NAME \ --service=servicenetworking.googleapis.com \ --project=$PROJECT_ID
Apigee crée une connexion entre votre réseau et les services de Google. Apigee, en particulier, connecte votre projet à l'API Service Networking via l'VPC. Apigee associe également des adresses IP à votre projet.
Étape 5 : Créez une organisation
Autorisations requises pour cette tâche
Vous pouvez attribuer à l'approvisionneur Apigee un rôle prédéfini qui inclut les autorisations nécessaires pour effectuer cette tâche, ou définir des autorisations plus précises selon le principe du moindre privilège. Consultez les pages suivantes :
Avant de pouvoir créer une organisation, vous devez créer un trousseau de clés et une clé de chiffrement de la base de données d'exécution (voir étape 1) et, si vous utilisez la résidence des données, les clés et les trousseaux de clés de chiffrement du plan de contrôle (voir l'étape 2). Ces clés Cloud KMS chiffrent les données stockées et répliquées dans des emplacements d'exécution et de plan de contrôle. Apigee utilise ces entités pour chiffrer les données d'application, telles que les KVM, le cache et les codes secrets des clients, qui sont ensuite stockées dans la base de données. Pour plus d'informations, voir À propos des clés de chiffrement Apigee.
-
Créez un trousseau de clés et une clé de chiffrement de la base de données d'exécution :
-
Définissez une variable d'environnement pour l'emplacement du trousseau de clés et de la clé de chiffrement de la base de données d'exécution. Cela permet de garantir la cohérence lorsque vous les créez et facilite le suivi dans la documentation.
La valeur est l'emplacement physique où sont stockés le trousseau de clés et la clé de chiffrement de la base de données d'exécution.
Configurations dans une seule région (dans lesquelles vous ne disposez que d'une seule instance dans une région) : choisissez parmi les emplacements régionaux KMS compatibles.
Exemple :
RUNTIMEDBKEY_LOCATION="us-west1"
Cette valeur peut être identique à votre valeur $RUNTIME_LOCATION (également une région), mais ce n'est pas une obligation. Toutefois, si elles sont identiques, cela peut améliorer les performances.
Configurations multirégionales : faites votre choix parmi les emplacements multirégionaux compatibles (tels que
us
oueurope
) ou les emplacements birégionauxExemple :
RUNTIMEDBKEY_LOCATION="us"
Si vous disposez d'une configuration multirégionale aux États-Unis, nous vous recommandons d'utiliser
us
pour votre emplacement si possible. Sinon, utiliseznam4
. - Définissez des variables d'environnement pour les noms de clés et du trousseau de clés de la base de données.
Le nom du trousseau de clés doit être unique au sein de votre organisation. Si vous créez une deuxième région ou plus, le nom ne peut pas être identique à celui des autres trousseaux de clés.
RUNTIMEDB_KEY_RING_NAME=
YOUR_DB_KEY_RING_NAME RUNTIMEDB_KEY_NAME=
YOUR_DB_KEY_NAME - (Facultatif) Vérifiez votre travail en répercutant les valeurs que vous venez de définir. Notez que lorsque vous souhaitez utiliser une variable dans vos commandes, faites précéder le nom de la variable d'un signe dollar ($).
echo $RUNTIMEDBKEY_LOCATION
echo $RUNTIMEDB_KEY_RING_NAME
echo $RUNTIMEDB_KEY_NAME
- Créez un trousseau de clés :
gcloud kms keyrings create $RUNTIMEDB_KEY_RING_NAME \ --location $RUNTIMEDBKEY_LOCATION --project $PROJECT_ID
L'emplacement de la clé de chiffrement de la base de données d'exécution Apigee est compatible avec tous les emplacements Cloud KMS qui acceptent Cloud HSM et Cloud EKM.
Créez une clé :
gcloud kms keys create $RUNTIMEDB_KEY_NAME \ --keyring $RUNTIMEDB_KEY_RING_NAME \ --location $RUNTIMEDBKEY_LOCATION \ --purpose "encryption" \ --project $PROJECT_ID
Cette commande crée la clé et l'ajoute au trousseau.
Obtenez l'ID de la clé :
gcloud kms keys list \ --location=$RUNTIMEDBKEY_LOCATION \ --keyring=$RUNTIMEDB_KEY_RING_NAME \ --project=$PROJECT_ID
L'ID de clé utilise la syntaxe suivante (semblable à un chemin de fichier) :
projects/
PROJECT_ID /locations/RUNTIMEDBKEY_LOCATION /keyRings/RUNTIMEDB_KEY_RING_NAME /cryptoKeys/RUNTIMEDB_KEY_NAME Placez l'ID de la clé dans une variable d'environnement. Vous utiliserez cette variable dans une commande ultérieure :
RUNTIMEDB_KEY_ID=
YOUR_RUNTIMEDB_KEY_ID Autorisez l'agent de service Apigee à utiliser la nouvelle clé :
gcloud kms keys add-iam-policy-binding $RUNTIMEDB_KEY_NAME \ --location $RUNTIMEDBKEY_LOCATION \ --keyring $RUNTIMEDB_KEY_RING_NAME \ --member serviceAccount:service-$PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project $PROJECT_ID
Cette commande associe la clé à l'agent de service Apigee.
Si la requête réussit,
gcloud
envoie une réponse semblable à celle-ci :Updated IAM policy for key [runtime]. bindings: - members: - serviceAccount:service-1234567890@gcp-sa-apigee.iam.gserviceaccount.com role: roles/cloudkms.cryptoKeyEncrypterDecrypter etag: BwWqgEuCuwk= version: 1
Si vous obtenez une erreur semblable à celle-ci :
INVALID_ARGUMENT: Role roles/cloudkms.cryptokms.cryptoKeyEncrypterDecrypter is not supported for this resource.
Assurez-vous d'avoir utilisé le numéro du projet, et non le nom du projet dans l'adresse e-mail du compte de service.
-
- Si vous utilisez la résidence des données, créez un trousseau de clés et une clé de chiffrement du plan de contrôle. Si vous n'utilisez pas la résidence des données, passez à l'étape 3.
- Définissez une variable d'environnement pour l'emplacement du trousseau de clés et de la clé de chiffrement de la base de données du plan de contrôle :
CONTROL_PLANE_LOCATION=
YOUR_CONTROL_PLANE_LOCATION CONSUMER_DATA_REGION=
YOUR_CONSUMER_DATA_REGION Où :
- CONTROL_PLANE_LOCATION est l'emplacement physique dans lequel les données du plan de contrôle Apigee seront stockées. Pour obtenir la liste des emplacements du plan de contrôle disponibles, consultez la section Emplacements Apigee.
- CONSUMER_DATA_REGION est une sous-région de la région du plan de contrôle. Vous devez spécifier les paramètres CONTROL_PLANE_LOCATION et CONSUMER_DATA_REGION. Pour obtenir la liste des régions de données client disponibles, consultez la section Emplacements Apigee.
Définissez des variables d'environnement pour les noms de clés et du trousseau de clés du plan de contrôle.
Le nom du trousseau de clés doit être unique au sein de votre organisation.
CONTROL_PLANE_KEY_RING_NAME=
YOUR_CONTROL_PLANE_KEY_RING_NAME CONTROL_PLANE_KEY_NAME=
YOUR_CONTROL_PLANE_KEY_NAME CONSUMER_DATA_KEY_RING_NAME=
YOUR_CONSUMER_DATA_KEY_RING_NAME CONSUMER_DATA_KEY_NAME=
YOUR_CONSUMER_DATA_REGION_KEY_NAME Où :
- CONTROL_PLANE_KEY_RING_NAME est le nom du trousseau de clés que vous utilisez pour identifier votre trousseau de clés de chiffrement du plan de contrôle.
- CONTROL_PLANE_KEY_NAME est le nom de la clé que vous utiliserez pour identifier votre clé de chiffrement du plan de contrôle.
- CONSUMER_DATA_KEY_RING_NAME est le nom du trousseau de clés que vous utilisez pour identifier votre trousseau de clés de chiffrement des régions des données client.
- CONSUMER_DATA_KEY_NAME est le nom de la clé que vous utiliserez pour identifier votre clé de chiffrement de la région de données client.
- Créez un trousseau de clés :
gcloud kms keyrings create $CONTROL_PLANE_KEY_RING_NAME \ --location $CONTROL_PLANE_LOCATION \ --project $PROJECT_ID
gcloud kms keyrings create $CONSUMER_DATA_KEY_RING_NAME \ --location $CONSUMER_DATA_REGION \ --project $PROJECT_ID
- Créez une clé :
gcloud kms keys create $CONTROL_PLANE_KEY_NAME \ --keyring $CONTROL_PLANE_KEY_RING_NAME \ --location $CONTROL_PLANE_LOCATION \ --purpose "encryption" \ --project $PROJECT_ID
gcloud kms keys create $CONSUMER_DATA_KEY_NAME \ --keyring $CONSUMER_DATA_KEY_RING_NAME \ --location $CONSUMER_DATA_REGION \ --purpose "encryption" \ --project $PROJECT_ID
Cette commande crée la clé et l'ajoute au trousseau.
Obtenez l'ID de la clé :
gcloud kms keys list \ --location=$CONTROL_PLANE_LOCATION \ --keyring=$CONTROL_PLANE_KEY_RING_NAME \ --project=$PROJECT_ID
gcloud kms keys list \ --location=$CONSUMER_DATA_REGION \ --keyring=$CONSUMER_DATA_KEY_RING_NAME \ --project=$PROJECT_ID
L'ID de clé utilise la syntaxe suivante (semblable à un chemin de fichier) :
projects/
PROJECT_ID /locations/CONTROL_PLANE_LOCATION /keyRings/CONTROL_PLANE_KEY_RING_NAME /cryptoKeys/CONTROL_PLANE_KEY_NAME projects/
PROJECT_ID /locations/CONSUMER_DATA_REGION /keyRings/CONSUMER_DATA_KEY_RING_NAME /cryptoKeys/CONSUMER_DATA_KEY_NAME - Placez l'ID de la clé dans une variable d'environnement. Vous utiliserez cette variable dans une commande ultérieure :
CONTROL_PLANE_KEY_ID=
YOUR_CONTROL_PLANE_KEY_ID CONSUMER_DATA_KEY_ID=
YOUR_CONSUMER_DATA_KEY_ID - Autorisez l'agent de service Apigee à utiliser la nouvelle clé :
gcloud kms keys add-iam-policy-binding $CONTROL_PLANE_KEY_NAME \ --location $CONTROL_PLANE_LOCATION \ --keyring $CONTROL_PLANE_KEY_RING_NAME \ --member "serviceAccount:service-$PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com" \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project $PROJECT_ID
gcloud kms keys add-iam-policy-binding $CONSUMER_DATA_KEY_NAME \ --location $CONSUMER_DATA_REGION \ --keyring $CONSUMER_DATA_KEY_RING_NAME \ --member "serviceAccount:service-$PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com" \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project $PROJECT_ID
Cette commande associe la clé à l'agent de service Apigee. Si la requête réussit, gcloud envoie une réponse semblable à celle-ci :
Updated IAM policy for key [runtime]. bindings: - members: - serviceAccount:service-1234567890@gcp-sa-apigee.iam.gserviceaccount.com role: roles/cloudkms.cryptoKeyEncrypterDecrypter etag: BwWqgEuCuwk= version: 1
Si vous obtenez une erreur semblable à celle-ci :
INVALID_ARGUMENT: Role roles/cloudkms.cryptokms.cryptoKeyEncrypterDecrypter is not supported for this resource.
Assurez-vous d'avoir utilisé le numéro du projet, et non le nom du projet dans l'adresse e-mail du compte de service.
-
Créez l'organisation en envoyant la requête suivante à l'API Organizations d'Apigee :
curl "https://apigee.googleapis.com/v1/organizations?parent=projects/$PROJECT_ID" \ -H "Authorization: Bearer $AUTH" \ -X POST \ -H "Content-Type:application/json" \ -d '{ "name":"'"$PROJECT_ID"'", "analyticsRegion":"'"$ANALYTICS_REGION"'", "runtimeType":"CLOUD", "billingType":"'"$BILLING_TYPE"'", "authorizedNetwork":"'"$NETWORK_NAME"'", "runtimeDatabaseEncryptionKeyName":"'"$RUNTIMEDB_KEY_ID"'" }'
Où :
-d
définit la charge utile des données pour la requête. Cette charge utile doit inclure les éléments suivants :name
: identifie votre nouvelle organisation. Il doit s'agir du même nom que votre ID de projet.analyticsRegion
: spécifie l'emplacement physique dans lequel vos données d'analyse seront stockées.runtimeType
: définissez cette valeur surCLOUD
.billingType
: spécifie le type de facturation de l'organisation créée.authorizedNetwork
: identifie le réseau d'appairage que vous avez spécifié dans la section Configurer la mise en réseau du service.runtimeDatabaseEncryptionKeyName
: ID de la clé de chiffrement de l'application que vous avez créée à l'étape précédente. Rappelez-vous que l'ID est structuré comme le chemin d'accès d'un fichier. Exemple :projects/my-project/locations/us-west1/keyRings/my-key-ring/cryptoKeys/my-key
Créez une organisation à l'aide de l'API :
curl "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations?parent=projects/$PROJECT_ID" \ -H "Authorization: Bearer $AUTH" \ -X POST \ -H "Content-Type:application/json" \ -d '{ "name":"'"$PROJECT_ID"'", "runtimeType":"CLOUD", "billingType":"'"$BILLING_TYPE"'", "controlPlaneEncryptionKeyName":"'"$CONTROL_PLANE_KEY_ID"'", "apiConsumerDataLocation":"'"$CONSUMER_DATA_REGION"'", "apiConsumerDataEncryptionKeyName":"'"$CONSUMER_DATA_KEY_ID"'", "authorizedNetwork":"'"$NETWORK_NAME"'", "runtimeDatabaseEncryptionKeyName":"'"$RUNTIMEDB_KEY_ID"'" }'
Où :
-d
définit la charge utile des données pour la requête. Cette charge utile doit inclure les éléments suivants :name
: identifie votre nouvelle organisation. Il doit s'agir du même nom que votre ID de projet.runtimeType
: définissez cette valeur surCLOUD
.billingType
: spécifie le type de facturation de l'organisation créée.controlPlaneEncryptionKeyName
: est l'ID de votre clé de plan de contrôle.apiConsumerDataLocation
: vous devez également spécifier une sous-région pour l'utilisation par les ressources internes. Consultez la section Régions de résidence des données pour connaître les valeurs acceptées.apiConsumerDataEncryptionKeyName
: est votre ID de clé de région des données client.authorizedNetwork
: identifie le réseau d'appairage que vous avez spécifié dans la section Configurer la mise en réseau du service.runtimeDatabaseEncryptionKeyName
: ID de la clé de chiffrement de l'application que vous avez créée à l'étape précédente. Rappelez-vous que l'ID est structuré comme le chemin d'accès d'un fichier. Par exemple :projects/my-project/locations/us-west1/keyRings/my-key-ring/cryptoKeys/my-key
Une fois cette commande exécutée, Apigee démarre une opération de longue durée, qui peut prendre quelques minutes.
Si vous obtenez une erreur, vérifiez l'utilisation de guillemets autour des valeurs des variables dans la charge utile des données. Assurez-vous d'utiliser des guillemets doubles-simples-doubles autour de la variable $PROJECT_ID, comme illustré dans l'exemple suivant :
"'"$PROJECT_ID"'"
Si vous utilisez des chaînes brutes (et non des variables d'environnement) pour les valeurs de requête, vous pouvez les encapsuler entre guillemets doubles dans la chaîne de charge utile entre guillemets simples, comme le montre l'exemple suivant :
'{ "name":"my-gcp-project", ... }'
- Attendez quelques minutes.
- Pour vérifier l'état de votre requête de création, vous pouvez envoyer une requête
GET
à l'API List organizations d'Apigee, comme illustré dans l'exemple suivant :curl -H "Authorization: Bearer $AUTH" "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID"
curl -H "Authorization: Bearer $AUTH" "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$PROJECT_ID"
Si la réponse suivante s'affiche, cela signifie que la création de l'organisation n'est pas encore terminée :
{ "error": { "code": 403, "message": "Permission denied on resource \"organizations/apigee-docs-m\" (or it may not exist)", "status": "PERMISSION_DENIED" } }
Si Apigee réussit à créer une organisation, vous obtenez une réponse semblable à celle-ci :
{ "name": "my-cloud-project", "createdAt": "1592586495539", "lastModifiedAt": "1592586495539", "environments": [], "properties": { "property": [ { "name": "features.hybrid.enabled", "value": "true" }, { "name": "features.mart.connect.enabled", "value": "true" } ] }, "analyticsRegion": "us-west1", "runtimeType": "CLOUD", "subscriptionType": "PAID", "caCertificate": "
YOUR_CERTIFICATE ", "authorizedNetwork": "my-network", "projectId": "my-cloud-project" }{ "name": "my-cloud-project", "createdAt": "1681412783749", "lastModifiedAt": "1681412783749", "environments": [ "test-env" ], "properties": { "property": [ { "name": "features.mart.connect.enabled", "value": "true" }, { "name": "features.hybrid.enabled", "value": "true" } ] }, "authorizedNetwork": "default", "runtimeType": "CLOUD", "subscriptionType": "PAID", "caCertificate": "
YOUR_CERTIFICATE ", "runtimeDatabaseEncryptionKeyName": "projects/my-cloud-project/locations/us/keyRings/my-key-ring/cryptoKeys/my-key-name", "projectId": "my-cloud-project", "state": "ACTIVE", "billingType": "PAYG", "addonsConfig": { "advancedApiOpsConfig": {}, "integrationConfig": {}, "monetizationConfig": {}, "connectorsPlatformConfig": {} }, "apiConsumerDataEncryptionKeyName": "projects/my-cloud-project/locations/us-central1/keyRings/my-key-ring/cryptoKeys/my-key-name", "controlPlaneEncryptionKeyName": "projects/my-cloud-project/locations/us/keyRings/my-key-ring/cryptoKeys/my-key-name", "apiConsumerDataLocation": "us-central1", "apigeeProjectId": "i0c2a37e80f9850ab-tp" }Si Apigee renvoie une réponse d'erreur HTTP, consultez la page Créer une organisation Apigee.
Pour créer un trousseau de clés et une clé de chiffrement du plan de contrôle, procédez comme suit.
Consultez également la page Dépannage de CMEK.