Protection des services d'infrastructure de cloud privé virtuel (VPC) avec des restrictions contextuelles
Les restrictions basées sur le contexte permettent aux propriétaires et aux administrateurs de comptes de définir et d'appliquer des restrictions d'accès aux ressources d' IBM Cloud®, en fonction du contexte des demandes d'accès. L'accès aux services d'infrastructure VPC peut être contrôlé à l'aide de restrictions basées sur le contexte et de politiques de gestion des identités et des accès (IAM).
Ces restrictions fonctionnent avec des règles IAM classiques, qui reposent sur l'identité, afin de fournir une couche de protection supplémentaire. Contrairement aux politiques IAM, les restrictions basées sur le contexte n'affectent pas d'accès. Les restrictions basées sur le contexte permettent de vérifier qu'une demande d'accès provient bien d'un contexte autorisé que vous avez configuré. Etant donné que l'accès IAM ainsi que les restrictions basées sur le contexte contrôlent l'accès, les restrictions basées sur le contexte offrent une protection même si les données d'identification sont compromises ou mal gérées. Pour plus d'informations, voir Que sont les restrictions basées sur le contexte ?.
Un utilisateur doit disposer du rôle Administrateur sur les services d'infrastructure VPC pour créer, mettre à jour ou supprimer des règles qui ciblent les services d'infrastructure VPC. Un utilisateur doit disposer du rôle Éditeur ou Administrateur sur le service de restrictions basées sur le contexte pour créer, mettre à jour ou supprimer des zones réseau. Un utilisateur ayant le rôle Viewer sur le service de restrictions basées sur le contexte peut uniquement ajouter des zones réseau à une règle.
Le service de restriction basé sur le contexte génère des journaux d'audit chaque fois qu'une politique basée sur le contexte est appliquée. Pour plus d'informations, voir Contrôle des restrictions basées sur le contexte.
Pour commencer à protéger vos services d'infrastructure VPC à l'aide de restrictions basées sur le contexte, consultez le didacticiel intitulé « Utiliser les restrictions basées sur le contexte pour sécuriser vos ressources ».
Comment VPC Infrastructure Services s'intègre aux restrictions contextuelles
VPC Infrastructure Services est un service composite composé d'un certain nombre de services enfants. Des restrictions basées sur le contexte peuvent être créées pour IBM Cloud VPC ou l'un de ses services enfants, par exemple les sous-réseaux, les instances de serveurs virtuels et les volumes d' Block Storage.
Consultez la section relative à la création de règles pour plus de détails sur la manière de créer des règles avec les attributs requis pour chaque service.
Création de zones réseau
Une zone réseau représente une liste d'adresses IP autorisées dans laquelle une demande d'accès est créée. Elle définit un ou plusieurs emplacements réseau qui sont spécifiés par les attributs suivants :
- Les adresses IP, qui comprennent les adresses individuelles, les plages d'adresses ou les sous-réseaux
- Clouds privés virtuels
- Références de service, qui permettent l'accès depuis d'autres services d' IBM Cloud®
Références de service
Une référence de service, qui est définie comme faisant partie d'une zone réseau, permet au service spécifié de communiquer avec les ressources ou API restreintes qui sont ciblées par une politique de restriction basée sur le contexte. Le tableau suivant contient les références de service qui doivent être incluses lorsque des restrictions basées sur le contexte sont utilisées dans le cadre des services d'infrastructure VPC. Vous pouvez également consulter les autorisations IAM de service à service dans votre compte lorsque vous réfléchissez aux références de service à ajouter dans votre zone réseau. Vous pouvez trouver l'autorisation de service à service dans votre compte en allant dans Gérer -> Accès (IAM) et en sélectionnant l'onglet Autorisations.
| Service avec restrictions contextuelles | Service impacté | Références de service requises dans la zone réseau |
|---|---|---|
| Cloud Object Storage | Services d'infrastructure VPC (is) |
|
| Key Protect | Cloud Block Storage (server-protect),File Storage for VPC ( is.share) |
|
| Hyper Protect Crypto Service | Cloud Block Storage (server-protect),File Storage for VPC ( is.share) |
|
| Instance de serveur virtuel | Services d'infrastructure VPC (is) |
|
| Divers services d'infrastructure VPC-Volume Block Storage, groupes de sécurité, sous-réseaux | IBM Kubernetes Service (containers-kubernetes) |
|
| Secrets Manager | Services d'infrastructure VPC (is) |
Création de zones réseau à l'aide de l'API
Vous pouvez créer des zones réseau à l'aide de la commande create-zone. Pour plus d'informations, voir Docs d'API.
L'attribut serviceRef pour les services d'infrastructure VPC est is. Cloud Block Storage est server-protect, et File Storage for VPC est is.share.
{
"name": "Example zone 1",
"description": "",
"addresses": [
{
"type": "serviceRef",
"ref": {
"service_name": "is"
}
}
]
}
{
"name": "Example zone 1",
"description": "",
"addresses": [
{
"type": "serviceRef",
"ref": {
"service_name": "server-protect"
}
}
]
}
Création de zones réseau à l'aide de l'interface de ligne de commande (CLI)
-
Pour créer des zones réseau à partir de l'interface CLI, installez le plug-in CBR CLI.
-
Utilisez la
cbr-zone-createcommande pour ajouter des emplacements réseau, des VPC et des références de service à des zones réseau. Pour plus d'informations, consultez la référence CBR CLI.Pour obtenir la liste des cibles de référence de service disponibles, exécutez la
ibmcloud cbr service-ref-targetscommande. Leservice_namepour les services d'infrastructure VPC estis. Cloud Block Storage estserver-protect, et File Storage for VPC estis.share.La commande suivante ajoute le
isservice, appelé « Services d'infrastructure VPC » dans la console IBM Cloud®, à une zone réseau.ibmcloud cbr zone-create --name example-zone-1 --description "Example zone 1" --service-ref service_name=isL'exemple de commande suivant ajoute le
server-protectservice, appelé* Cloud Block Storage* dans IBM Cloud® console, vers une zone réseau.ibmcloud cbr zone-create --name example-zone-1 --description "Example zone 1" --service-ref service_name=server-protect
Création de zones réseau à partir de la console
- Déterminez les ressources à ajouter à votre liste autorisée.
- Consultez la section Références de service pour voir si vous devez ajouter une référence de service à votre zone réseau.
- Procédez comme suit pour créer des restrictions contextuelles dans la console.
Création de règles
Au sein des services d'infrastructure VPC, chaque service enfant nécessite certains attributs dans une règle basée sur le contexte.
Lorsque vous utilisez l'API, Terraform ou l'interface CLI IBM Cloud pour créer, mettre à jour ou supprimer des restrictions basées sur le contexte d' IBM Cloud, vous pouvez spécifier la ressource d'infrastructure VPC cible à l'aide des attributs de ressource.
Voir Attributs de ressource VPC pour les attributs de ressource qui correspondent à des ressources VPC individuelles.
Vous pouvez sélectionner une ressource en saisissant l'identifiant de l'objet. Vous pouvez également utiliser le caractère générique * pour sélectionner toutes les ressources applicables. Par exemple, l'attribut vpcId:* définit les restrictions contextuelles à appliquer à tous les VPC du compte. Vous pouvez également spécifier dans cette commande le groupe de ressources auquel la règle est appliquée.
Création de règles en utilisant l'API
Passez en revue les exemples de demande suivants pour créer des règles. Pour plus d'informations sur v1/rules API, voir la documentation sur les API.
Une fois que vous avez créé une règle, la mise à jour de cette règle peut prendre jusqu'à 10 minutes.
L'exemple suivant crée une règle qui protège les instances de serveurs virtuels et n'autorise l'accès qu'à partir de la zone réseau spécifiée par le biais d'un point d'accès privé l'accès uniquement à partir de la zone réseau spécifiée par le biais d'un point de terminaison privé.
{
"contexts": [
{
"attributes": [
{
"name": "endpointType",
"value": "private"
},
{
"name": "networkZoneId",
"value": "45ec64065b7c2bf84b3edec803335111"
}
]
}
],
"resources": [
{
"attributes": [
{
"name": "resourceGroupId",
"value": "1171749e3a8545069d04e6fca1ded18f"
},
{
"name": "serviceName",
"value": "is"
},
{
"name": "instanceId",
"value": "*"
}
]
}
]
}
Création de règles à l'aide de l'interface de ligne de commande (CLI)
- Pour créer des règles à partir de l'interface de ligne de commande, installez le plug-in d'interface de ligne de commande CBR.
- Utilisez la commande
ibmcloud cbr rule-createpour créer des règles CBR. Pour plus d'informations, voir la référence de l'interface de ligne de commande de CBR.
Les exemples suivants sont des règles d'application. Vous pouvez créer des rapports uniquement en ajoutant --enforcement-mode report.
L'exemple de commande CLI suivant crée une règle de restriction basée sur le contexte pour toutes les instances de serveur virtuel dans le compte en cours:
ibmcloud cbr rule-create --zone-id a7eeb5dd8e6bdce670eba1afce18e37f --description "Test CBR for VSIs" --service-name is --resource-attributes "instanceId=*"
L'exemple de commande CLI suivant crée une règle de restriction basée sur le contexte pour un volume de stockage par blocs spécifique dans le compte en cours:
ibmcloud cbr rule-create --zone-id a7eeb5dd8e6bdce670eba1afce18e37f --description "Test CBR for volume" --service-name is --resource-attributes "volumeId=UUID_OF_THE_VOLUME"
L'exemple de commande CLI suivant crée une règle de restriction basée sur le contexte pour toutes les instances de serveur virtuel dans le compte en cours et restreint l'accès aux noeuds finaux privés:
ibmcloud cbr rule-create --context-attributes 'endpointType=private' --zone-id a7eeb5dd8e6bdce670eba1afce18e37f --description "Test CBR for VSIs" --service-name is --resource-attributes "instanceId=*"
L'exemple de commande CLI suivant crée une règle de restriction basée sur le contexte pour toutes les instances de serveur virtuel du groupe de ressources et restreint l'accès aux noeuds finaux privés:
ibmcloud cbr rule-create --context-attributes 'endpointType=private' --zone-id a7eeb5dd8e6bdce670eba1afce18e37f --description "Test CBR for VSIs" --service-name is --resource-attributes "instanceId=*" --resource-group-id 1171749e3a8545069d04e6fca1ded18f
Création de règles dans la console
-
Accédez à Gérer > Restrictions basées sur le contexte dans la console IBM Cloud®.
-
Sélectionnez Règles et cliquez sur Créer.
-
Sélectionnez VPC Infrastructure Services et cliquez sur Suivant.
-
Appliquez la règle à « Toutes les ressources » ou à « Ressources spécifiques ». Pour plus d'informations, voir Protection des ressources des services d'infrastructure VPC. Cliquez sur Continu.
-
Définissez les types de noeud final autorisés.
- Conservez la valeur No pour autoriser tous les types de noeud final.
- Définissez le bouton à bascule sur Oui pour n'autoriser que des types de noeud final spécifiques, puis faites votre choix dans la liste.
-
Sélectionnez une ou plusieurs zones réseau existantes, ou créez une zone réseau en cliquant sur Créer.
Les contextes définissent l'emplacement à partir duquel vos ressources sont accessibles, en liant efficacement votre zone réseau à votre règle.
-
Cliquez sur « Ajouter » pour ajouter votre configuration au récapitulatif. Cliquez sur Suivant.
-
Nommez votre règle et sélectionnez la manière dont vous souhaitez l'appliquer. Cliquez ensuite sur Créer.
Restrictions basées sur le contexte de contrôle dans les services d'infrastructure VPC
Le service de restriction basé sur le contexte génère des journaux d'audit chaque fois qu'une politique basée sur le contexte est appliquée. Pour plus d'informations, voir Contrôle des restrictions contextuelles.
Traitement des incidents dus à des restrictions contextuelles
403 Messages d'erreur non autorisés
Lorsqu'une requête est refusée en raison d'autorisations d'accès incorrectes ou parce qu'elle provient d'une zone réseau non définie dans la règle de restrictions basées sur le contexte, la réponse d'erreur est similaire aux exemples suivants.
Erreur 403 non autorisée dans la réponse CLI
Error code: not_authorized and
Error message: the provided token is not authorized
Trace ID: b266a31c-b359-4ecb-8b81-a27c1b2cdb7b
Erreur 403 non autorisée dans la console d' IBM Cloud
reference_id b266a31c-b359-4ecb-8b81-a27c1b2cdb7b
code not_authorized
message the provided token is not authorized
Erreur 403 non autorisée dans la réponse API
"code":"not_authorized",
"message":"the provided token is not authorized to list floating-ips in this account"
"trace":"b266a31c-b359-4ecb-8b81-a27c1b2cdb7b"
Localisation des événements de restriction basés sur le contexte
Vous pouvez utiliser la valeur de Trace ID ou Reference ID pour rechercher dans votre instance IBM Cloud Logs les événements générés par le service de restrictions basées sur le contexte. La section requestData.environment indique l'adresse IP source de l'appel et d'autres informations que vous pouvez utiliser pour vérifier pourquoi l'autorisation a été refusée. Les zones requestData.action et requestData.resource peuvent être utilisées
pour déterminer la ressource sous-jacente à laquelle l'accès a été refusé.
L'exemple suivant est un événement de restriction basé sur le contexte. Certains champs ont été supprimés pour améliorer la lisibilité.
{
"level": "critical",
"action": "context-based-restrictions.policy.eval",
"message": "Context based restriction rendered a deny",
"severity": "critical",
"correlationId": "TXID-b266a31c-b359-4ecb-8b81-a27c1b2cdb7b-df2f912c-80a1-422c-8b17-6092651fea00",
"requestData": {
"action": "is.vpc.vpc.create",
"reqOrder": 0,
"environment": {
"attributes": {
"ipAddress": "192.168.0.1",
"networkType": "public"
}
},
"resource": {
"attributes": {
"accountId": "67db3d7ff3f34220b40e2d81480754c9",
"resource": "NEWRESOURCE",
"vpcId": "NEWRESOURCE",
"resourceGroupId": "d272ce832535498e9142b557ff8638ed",
"region": "au-syd",
"serviceName": "is",
"resourceType": "vpc"
}
},
"subject": {
"attributes": {
"scope": "ibm openid",
"token.account.bss": "67db3d7ff3f34220b40e2d81480754c9",
"id": "IBMid-550009FB7N"
}
}
},
"responseData": {
"decision": "Deny",
"isEnforced": true
}
}
Vous pouvez ensuite utiliser le même ID de trace ou ID de référence pour examiner l'événement de service spécifique de l'infrastructure VPC dans votre instance IBM Cloud Logs.
{
"action": "is.vpc.vpc.create",
"outcome": "failure",
"message": "Virtual Private Cloud: create vpc -failure",
"severity": "critical",
"dataEvent": false,
"logSourceCRN": "crn:v1:bluemix:public:is:au-syd:a/67db3d7ff3f34220b40e2d81480754c9::vpc:",
"saveServiceCopy": true,
"initiator": {
"id": "IBMid-ABCDEFGH",
"typeURI": "service/security/account/user",
"name": "test@ibm.com",
"authnName": "test",
"authnId": "IBMid-ABCDEFGH",
"host": {
"address": "192.168.0.1",
"addressType": "IPv4"
},
"credential": {
"type": "token"
}
},
"target": {
"id": "crn:v1:bluemix:public:is:au-syd:a/67db3d7ff3f34220b40e2d81480754c9::vpc:",
"typeURI": "is.vpc/vpc",
"name": "",
"resourceGroupId": "crn:v1:bluemix:public:resource-controller::a/67db3d7ff3f34220b40e2d81480754c9::resource-group:d272ce832535498e9142b557ff8638ed"
},
"reason": {
"reasonCode": 403,
"reasonType": "Forbidden",
"reasonForFailure": "Your access token is invalid or does not have the necessary permissions to perform this task"
},
"requestData": {
"generation": "2",
"requestId": "b266a31c-b359-4ecb-8b81-a27c1b2cdb7b"
},
"responseData": {
"responseURI": "/v1/vpcs/"
}
}
Vous pouvez également rechercher des événements à l'aide d'un identificateur de ressource. Un ID ressource est un identificateur unique universel et est le dernier identificateur d'un nom de ressource de cloud. Voir l'exemple suivant
crn:v1:bluemix:public:is:au-syd:a/67db3d7ff3f34220b40e2d81480754c9::vpc:<resourceID>
Les demandes de mise à disposition de ressources ne contiennent pas d'ID de ressource.
Si vous ne trouvez pas d'événement de restriction basé sur le contexte dans le IBM Cloud Logs, il est possible que l'accès ait été refusé en raison des politiques d'accès IAM. Pour plus d'informations, consultez le guide de démarrage VPC IAM.
Impact du plan de données VPN client-site avec des restrictions contextuelles
Si vous activez l'ID utilisateur et le code d'accès dans la configuration d'authentification client pour un VPN client-site et que vous créez
des règles basées sur le contexte sur les ressources VPC, la connexion client au VPN est affectée par les restrictions basées sur le contexte. Si l'adresse IP distante du client VPN ne se trouve pas dans la Zone réseau,
la connexion au serveur VPN renvoie une erreur Auth Failed.
Une fois que le client VPN se connecte au serveur VPN, les demandes adressées au noeud final VPE ou au noeud final de service cloud (CSE) sont contrôlées avec des restrictions basées sur le contexte. En outre, l'adresse IP source des demandes est le VPC Cloud service endpoint source addresses. Vérifiez que les adresses source CSE VPC se trouvent dans la zone réseau CBR ; sinon, la demande est refusée.
Limitations
- Les restrictions basées sur le contexte protègent uniquement les actions associées aux API des services d'infrastructure VPC ou au
isplug-in de l'interface CLI d' IBM. Les options SDK et Terraform sont également prises en charge. Les actions associées aux API de plateforme suivantes ne sont pas protégées par des restrictions basées sur le contexte :- API de liste d'instances de ressource
- API de suppression d'instance de ressource
- API de recherche globale
- Balisage global des API Attach et Detach
- Lorsque vous créez une règle, son application peut prendre jusqu'à 10 minutes.
- En raison d'une limitation en cours de résolution, aucune restriction basée sur le contexte ne doit être mise en place pour les API d' Secrets Manager s lorsque vous utilisez le service Load balancer for VPC. Car cela empêche d'associer les certificats à l'écouteur associé à l'équilibreur de charge.