Gestion de l'accès IAM pour les services d'infrastructure VPC
L'accès aux instances de service IBM Cloud® Virtual Private Cloud pour les utilisateurs de votre compte est contrôlé par IAM (Cloud Identity and Access Management). Chaque utilisateur qui accède au service VPC Infrastructure Services
dans votre compte doit se voir attribuer une politique d'accès avec un rôle IAM. Examinez les rôles, actions et autres éléments suivants afin de déterminer la meilleure façon d'attribuer un accès à VPC Infrastructure Services
.
La règle d'accès que vous affectez aux utilisateurs dans votre compte détermine les actions que l'utilisateur peut effectuer dans le contexte du service ou de l'instance spécifique que vous sélectionnez. Les actions autorisées sont personnalisées
et définies par VPC Infrastructure Services
en tant qu'opérations que vous êtes autorisé à effectuer sur le service. Chaque action est associée à une plateforme IAM ou à un rôle de service que vous pouvez attribuer à un utilisateur.
Si un rôle spécifique et ses actions ne correspondent pas au cas d'utilisation que vous recherchez, vous pouvez créer un rôle personnalisé et sélectionner les actions à inclure.
Les politiques d'accès IAM permettent d'accorder l'accès à différents niveaux. Les options suivantes sont incluses:
- Accès à toutes les instances du service dans votre compte
- Accès à une instance de service individuelle dans votre compte
- Accès à une ressource spécifique au sein d'une instance, telle que
vpcId
ouinstanceId
.
Le tableau suivant répertorie les attributs des ressources VPC. Pour plus d'informations, voir Attributs de ressource VPC.
Ressource | Attribut de ressource |
---|---|
Mise à l'échelle automatique pour VPC | instanceGroupId:<instance-group-id> |
Service de sauvegarde | backupPolicyId: <backup-policy-id> |
Block Storage for VPC | volumeId: <volume-id> |
Serveur bare metal | bareMetalServerId: <bare-metal-server-id> |
Réseaux de clusters pour VPC | clusterNetworkId: <cluster-network-id> |
Dedicated Host for VPC | dedicatedHostId:<dedicated-host-id> |
File Storage | shareId: <share-id> |
Adresse IP flottante pour VPC | floatingIpId: <fip-id> |
Flow Logs for VPC | flowLogCollectorId: <flc-id> |
Service d'image pour VPC | imageId:<image-id> |
Équilibreur de charge pour VPC | loadBalancerId: <load-balancer-id> |
Network ACL | networkAclId: <nacl-id> |
Groupe de placement pour VPC | placementGroupId: <placement-group-id> |
Services de chemin privé pour VPC | privatePathServiceGatewayId: <private-path-service-gateway-id> |
Plage d'adresses publiques pour VPC | publicAddressRangeId: <public-address-range-id> |
Passerelle publique pour VPC | publicGatewayId: <pgw-id> |
Réservations pour VPC | reservationId: <reservation-id> |
Groupe de sécurité pour VPC | securityGroupId: <default-sec-grp-id> |
Instantanés | snapshotId: <snapshot-id> |
Clé SSH pour VPC | keyId:<key-id> |
Sous-réseau | subnetId: <subnet-id> |
Interface de réseau virtuel | virtualNetworkInterfaceId:<virtual-network-interface-id> |
Noeud final privé virtuel pour VPC | endpointGatewayId:<endpoint-gateway-id> |
Virtual Private Cloud | vpcId: <vpc-id> |
Virtual Server for VPC | instanceId: <instance-id> |
VPN for VPC | vpnGatewayID: <vpn-gateway-id> |
Consultez les tableaux suivants qui décrivent les types de tâches autorisées par chaque rôle lorsque vous travaillez avec le service VPC Infrastructure Services
. Les rôles de gestion de plateforme permettent aux utilisateurs d'effectuer
des tâches sur des ressources de service au niveau de la plateforme. Par exemple, attribuer un accès utilisateur au service, créer ou supprimer des instances et lier des instances à des applications. Les rôles d'accès au service permettent aux
utilisateurs d'accéder à VPC Infrastructure Services
et d'appeler l'API VPC Infrastructure Services
.
Rôle de plateforme | Description des actions |
---|---|
Afficheur | Vous pouvez visualiser les instances de service, mais vous ne pouvez pas les modifier. |
Opérateur | Vous pouvez effectuer des actions de plateforme nécessaires à la configuration et au fonctionnement des instances de service, telles que l'affichage d'un tableau de bord de service. |
Editeur | Vous pouvez effectuer toutes les actions de la plate-forme, à l'exception de la gestion du compte et de l'attribution des politiques d'accès. |
Administrateur | Vous pouvez effectuer toutes les actions de la plate-forme en fonction de la ressource à laquelle ce rôle est attribué, y compris l'attribution de politiques d'accès à d'autres utilisateurs. |
Rôle de service | Description des actions |
---|---|
Lecteur | Vous pouvez effectuer des actions en lecture seule au sein d'un service, telles que la visualisation des ressources spécifiques au service. |
Auteur | Vous disposez d'autorisations allant au-delà du rôle de lecteur, y compris la création et la modification de ressources spécifiques à un service. |
Responsable | Vous disposez d'autorisations au-delà du rôle de rédacteur qui vous permettent d'effectuer des actions privilégiées, telles que définies par le service. De plus, vous pouvez créer et éditer des ressources spécifiques au service. |
VPNClient | Vous devez sélectionner uniquement ce rôle si vous devez affecter l'accès aux clients VPN pour lesquels l'authentification par ID utilisateur et code d'accès est configurée. Si vous devez configurer l'authentification de l'ID utilisateur et du code d'accès, voir Configuration des ID utilisateur et des codes d'accès. |
Opérateur de réseau avancé Bare Metal | Vous avez accès à la modification de l'usurpation d'adresse IP et de la conversion d'adresses réseau d'infrastructure sur les interfaces bare metal. |
Administration de la console Bare Metal | Vous pouvez accéder à la console de serveur bare metal. |
Opérateur d'usurpation d'adresse IP | Vous pouvez activer ou désactiver la vérification de l'usurpation d'adresse IP sur les instances de serveur virtuel. N'accordez ce rôle que si nécessaire. |
Administrateur de la console | Vous pouvez accéder à la console de l'instance de serveur virtuel. Ce rôle n'offre qu'un accès à la console et doit être associé à un autre rôle qui offre un accès opérateur au serveur virtuel, tel qu'Opérateur, Éditeur ou Administrateur. |
Pour plus d'informations sur les actions exactes qui sont mappées à chaque rôle, voir Infrastructure Services
sur la page des rôles et actions IAM.
Les liens suivants vous permettent d'accéder directement au service d'infrastructure spécifique sur la page des rôles et des actions IAM.
Rôles et actions de l'IAM du réseau
- Réseaux de clusters pour VPC
- Adresse IP flottante pour VPC
- Flow Logs for VPC
- Équilibreur de charge pour VPC
- Network ACL
- Services de chemin privé
- Passerelles publiques
- Tables de routage (Voir la section Virtual Private Cloud > onglet Actions)
- Groupes de sécurité pour VPC
- Sous-réseaux
- Virtual Private Cloud
- Noeud final privé virtuel pour VPC
- VPN for VPC
- Client VPN pour VPC
- Interface de réseau virtuel
Calculer les rôles et actions IAM
Rôles et actions de l'IAM en matière de stockage
- Block Storage for VPC
- Block Storage Snapshots for VPC
- Block Storage Instantanés multivolume pour VPC
- Sauvegarde en tant que service pour VPC
- File Storage for VPC
Certaines tâches VPC requièrent des autorisations pour plusieurs actions IAM. Par exemple, la création d'une instance de serveur virtuel requiert non seulement is.instance.instance.create
, mais également is.vpc.vpc.operate
,
is.subnet.subnet.operate
, is.security-group.security-group.operate
et is.volume.volume.create
. Des actions conditionnelles supplémentaires peuvent être requises. Par exemple, si vous mettez à disposition
une instance sur un hôte dédié, vous avez besoin de is.dedicated-host.dedicated-host-group.operate
et is.dedicated-host.dedicated-host.operate
. La référence d'API de cloud privé virtuel inclut une section d'autorisation
pour chaque appel d'API, par exemple, Créer une instance.
Affectation de l'accès aux services d'infrastructure VPC dans la console
Il existe deux façons d'attribuer un accès dans la console :
- Règles d'accès par utilisateur. Vous pouvez gérer les règles d'accès par utilisateur à partir de la page Gérer > Accès (IAM) > Utilisateurs de la console. Pour plus d'informations sur les étapes d'affectation de l'accès IAM, voir Managing access to resources.
- Groupes d'accès. Les groupes d'accès sont utilisés pour rationaliser la gestion des accès en affectant une fois l'accès à un groupe. Ensuite, vous pouvez ajouter ou supprimer des utilisateurs du groupe au besoin pour contrôler leur accès. Vous gérez les groupes d'accès et leur accès à partir de la page Gérer > Accès (IAM) > Groupes d'accès de la console. Pour plus d'informations, voir Affectation d'un accès à un groupe dans la console.
Affectation de l'accès aux services d'infrastructure VPC dans l'interface de ligne de commande
Pour obtenir des instructions détaillées sur l'affectation, la suppression et l'examen des accès, consultez Affectation de l'accès aux ressources à l'aide de l'interface de ligne de commande.
L'exemple suivant illustre une commande permettant d'affecter le rôle Viewer
pour VPC Infrastructure Services
:
Utilisez is
comme nom de service. De même, utilisez des guillemets autour des noms de rôles qui comportent plus d'un mot, comme le montre l'exemple ci-dessous.
ibmcloud iam user-policy-create USER@EXAMPLE.COM --service-name is --roles "Viewer"
Affectation de l'accès aux services d'infrastructure VPC à l'aide de l'API
Pour obtenir des instructions étape par étape sur l'attribution, la suppression et la révision de l'accès, voir Attribution de l'accès aux ressources à l'aide de l'API ou Création d'une API de politique. Les noms de ressource cloud (CRN) du rôle dans le tableau suivant sont utilisés pour affecter l'accès avec l'API.
Nom du rôle | Rôle CRN |
---|---|
Afficheur | crn:v1:bluemix:public:iam::::role:Viewer |
Opérateur | crn:v1:bluemix:public:iam::::role:Operator |
Editeur | crn:v1:bluemix:public:iam::::role:Editor |
Administrateur | crn:v1:bluemix:public:iam::::role:Administrator |
Lecteur | crn:v1:bluemix:public:iam::::serviceRole:Reader |
Auteur | crn:v1:bluemix:public:iam::::serviceRole:Writer |
Responsable | crn:v1:bluemix:public:iam::::serviceRole:Manager |
VPNClient | crn:v1:bluemix:public:iam::::serviceRole:VPNClient |
Opérateur de réseau avancé Bare Metal | crn:v1:bluemix:public:iam::::serviceRole:BareMetalAdvancedNetworkOperator |
Administration de la console Bare Metal | crn:v1:bluemix:public:iam::::serviceRole:BareMetalConsoleAdmin |
Opérateur d'usurpation d'adresse IP | crn:v1:bluemix:public:iam::::serviceRole:IPSpoofingOperator |
Administrateur de la console | crn:v1:bluemix:public:iam::::serviceRole:VirtualServerConsoleAdmin |
L'exemple suivant permet d'affecter le rôle Viewer
pour VPC Infrastructure Services
:
Utilisez is
pour le nom du service et consultez le tableau des valeurs de l'ID de rôle pour vous assurer que vous utilisez la bonne valeur pour le CRN.
curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H 'Authorization: Bearer $TOKEN' -H 'Content-Type: application/json' -d '{
"type": "access",
"description": "Object Writer role for Cloud Object Storage",
"subjects": [
{
"attributes": [
{
"name": "iam_id",
"value": "IBMid-123453user"
}
]
}'
],
"roles":[
{
"role_id": "crn:v1:bluemix:public:iam::::role:Viewer"
}
],
"resources":[
{
"attributes": [
{
"name": "accountId",
"value": "$ACCOUNT_ID"
},
{
"name": "serviceName",
"value": "is"
}
]
}
]
}
SubjectAttribute subjectAttribute = new SubjectAttribute.Builder()
.name("iam_id")
.value("IBMid-123453user")
.build();
PolicySubject policySubjects = new PolicySubject.Builder()
.addAttributes(subjectAttribute)
.build();
PolicyRole policyRoles = new PolicyRole.Builder()
.roleId("crn:v1:bluemix:public:iam::::role:Viewer")
.build();
ResourceAttribute accountIdResourceAttribute = new ResourceAttribute.Builder()
.name("accountId")
.value("ACCOUNT_ID")
.operator("stringEquals")
.build();
ResourceAttribute serviceNameResourceAttribute = new ResourceAttribute.Builder()
.name("serviceName")
.value("is")
.operator("stringEquals")
.build();
PolicyResource policyResources = new PolicyResource.Builder()
.addAttributes(accountIdResourceAttribute)
.addAttributes(serviceNameResourceAttribute)
.build();
CreatePolicyOptions options = new CreatePolicyOptions.Builder()
.type("access")
.subjects(Arrays.asList(policySubjects))
.roles(Arrays.asList(policyRoles))
.resources(Arrays.asList(policyResources))
.build();
Response<Policy> response = service.createPolicy(options).execute();
Policy policy = response.getResult();
System.out.println(policy);
const policySubjects = [
{
attributes: [
{
name: 'iam_id',
value: 'IBMid-123453user',
},
],
},
];
const policyRoles = [
{
role_id: 'crn:v1:bluemix:public:iam::::role:Viewer',
},
];
const accountIdResourceAttribute = {
name: 'accountId',
value: 'ACCOUNT_ID',
operator: 'stringEquals',
};
const serviceNameResourceAttribute = {
name: 'serviceName',
value: 'is',
operator: 'stringEquals',
};
const policyResources = [
{
attributes: [accountIdResourceAttribute, serviceNameResourceAttribute]
},
];
const params = {
type: 'access',
subjects: policySubjects,
roles: policyRoles,
resources: policyResources,
};
iamPolicyManagementService.createPolicy(params)
.then(res => {
examplePolicyId = res.result.id;
console.log(JSON.stringify(res.result, null, 2));
})
.catch(err => {
console.warn(err)
});
policy_subjects = PolicySubject(
attributes=[SubjectAttribute(name='iam_id', value='IBMid-123453user')])
policy_roles = PolicyRole(
role_id='crn:v1:bluemix:public:iam::::role:Viewer')
account_id_resource_attribute = ResourceAttribute(
name='accountId', value='ACCOUNT_ID')
service_name_resource_attribute = ResourceAttribute(
name='serviceName', value='is')
policy_resources = PolicyResource(
attributes=[account_id_resource_attribute,
service_name_resource_attribute])
policy = iam_policy_management_service.create_policy(
type='access',
subjects=[policy_subjects],
roles=[policy_roles],
resources=[policy_resources]
).get_result()
print(json.dumps(policy, indent=2))
subjectAttribute := &iampolicymanagementv1.SubjectAttribute{
Name: core.StringPtr("iam_id"),
Value: core.StringPtr("IBMid-123453user"),
}
policySubjects := &iampolicymanagementv1.PolicySubject{
Attributes: []iampolicymanagementv1.SubjectAttribute{*subjectAttribute},
}
policyRoles := &iampolicymanagementv1.PolicyRole{
RoleID: core.StringPtr("crn:v1:bluemix:public:iam::::role:Viewer"),
}
accountIDResourceAttribute := &iampolicymanagementv1.ResourceAttribute{
Name: core.StringPtr("accountId"),
Value: core.StringPtr("ACCOUNT_ID"),
Operator: core.StringPtr("stringEquals"),
}
serviceNameResourceAttribute := &iampolicymanagementv1.ResourceAttribute{
Name: core.StringPtr("serviceName"),
Value: core.StringPtr("is"),
Operator: core.StringPtr("stringEquals"),
}
policyResources := &iampolicymanagementv1.PolicyResource{
Attributes: []iampolicymanagementv1.ResourceAttribute{
*accountIDResourceAttribute, *serviceNameResourceAttribute}
}
options := iamPolicyManagementService.NewCreatePolicyOptions(
"access",
[]iampolicymanagementv1.PolicySubject{*policySubjects},
[]iampolicymanagementv1.PolicyRole{*policyRoles},
[]iampolicymanagementv1.PolicyResource{*policyResources},
)
policy, response, err := iamPolicyManagementService.CreatePolicy(options)
if err != nil {
panic(err)
}
b, _ := json.MarshalIndent(policy, "", " ")
fmt.Println(string(b))
Affectation de l'accès aux services d'infrastructure VPC à l'aide de Terraform
L'exemple suivant permet d'affecter le rôle Viewer
pour VPC Infrastructure Services
:
Utilisez is
comme nom de service.
resource "ibm_iam_user_policy" "policy" {
ibm_id = "test@example.com"
roles = ["Viewer"]
resources {
service = "is"
}
}
Pour plus d'informations, voir ibm_iam_user_policy.
Conseils
- L'accès à une ressource de conteneur n'accorde pas automatiquement l'accès à ses sous-ressources. Par exemple, l'octroi de l'accès à un VPC n'accorde pas l'accès aux sous-réseaux dans ce VPC.
- De même, l'accès à une sous-ressource n'accorde pas l'accès à sa ressource de conteneur. Par exemple, l'octroi de l'accès à un sous-réseau n'accorde pas l'accès au VPC de ce sous-réseau.
- En général, pour modifier la relation entre plusieurs ressources, l'utilisateur doit avoir accès à chaque ressource. Par exemple, pour connecter une interface réseau à un groupe de sécurité, l'utilisateur doit avoir accès à l'interface réseau et au groupe de sécurité.
Pour plus d'informations sur l'attribution des rôles d'utilisateur dans la console, voir Gestion des autorisations d'utilisateur pour les ressources VPC.
Vous pouvez également affecter des rôles utilisateur à l'aide de l' interface de ligne de commande d'IBM Cloud®. Vous pouvez sélectionner des ressources à l'aide de leurs attributs. Pour plus d'informations, voir Attributs de ressource VPC.
Groupes de ressources
Un groupe de ressources est un ensemble de ressources, telles qu'un VPC entier ou un sous-réseau unique, qui sont associées pour établir l'autorisation et l'utilisation. Vous pouvez imaginer un groupe de ressources comme une collection d'infrastructures pouvant être utilisée par un projet, un service ou une équipe.
Les grandes entreprises peuvent diviser un VPC en différents groupes de ressources, tandis que les plus petites entreprises peuvent avoir besoin d'un seul groupe de ressources car tous les membres de l'équipe ont accès à l'intégralité du VPC. Si vous connaissez OpenStack, un groupe de ressources est similaire à un Projet dans OpenStack Keystone.
L'affectation d'une ressource à un groupe de ressources ne peut être effectuée que lorsque la ressource est créée. Les ressources ne peuvent pas modifier les groupes de ressources après leur création.
Si vous souhaitez utiliser plusieurs groupes de ressources, il est bon de planifier la manière dont vous souhaitez affecter les ressources et les utilisateurs de votre organisation à chaque groupe de ressources.
Pour plus d'informations sur le groupe de ressources, voir Groupes de ressources.