Gestión del acceso de IAM para servicios de infraestructura de VPC
El acceso a las instancias de servicio de IBM Cloud® Virtual Private Cloud para los usuarios de su cuenta está controlado por Cloud Identity and Access Management (IAM). Cada usuario que acceda al servicio VPC Infrastructure Services en su cuenta debe tener asignada una política de acceso con un rol IAM. Revise los siguientes roles, acciones y más para ayudar a determinar la mejor manera de asignar el acceso a VPC Infrastructure Services.
La política de acceso que se asigne a los usuarios en la cuenta determinará qué acciones pueden realizar en el contexto del servicio o instancia específica seleccionados. Las acciones permitidas se personalizan y definen mediante VPC Infrastructure Services como operaciones que puede realizar en el servicio. Cada acción se correlaciona con una plataforma de IAM o un rol de servicio que puede asignar a un usuario.
Si un rol específico y sus acciones no se ajustan al caso práctico que desea abordar, puede crear un rol personalizado y seleccionar las acciones que desea incluir.
Las políticas de acceso de IAM permiten conceder acceso a distintos niveles. A continuación se muestran algunas opciones que se incluyen:
- Acceso a todas las instancias del servicio de su cuenta
- Acceso a una instancia de servicio individual en su cuenta
- Acceso a un recurso específico dentro de una instancia, como
vpcIdoinstanceId.
La siguiente tabla enumera los atributos de los recursos de la VPC. Para obtener más información, consulte Atributos de recursos de VPC.
| Recurso | Atributo de recurso |
|---|---|
| Auto Scale for VPC | instanceGroupId:<instance-group-id> |
| Servicio de copia de seguridad | backupPolicyId: <backup-policy-id> |
| Block Storage for VPC | volumeId: <volume-id> |
| Servidor nativo | bareMetalServerId: <bare-metal-server-id> |
| Redes de clústeres para VPC | clusterNetworkId: <cluster-network-id> |
| Dedicated Host for VPC | dedicatedHostId:<dedicated-host-id> |
| File Storage | shareId: <share-id> |
| Floating IP for VPC | floatingIpId: <fip-id> |
| Flow Logs for VPC | flowLogCollectorId: <flc-id> |
| Image Service for VPC | imageId:<image-id> |
| Load Balancer for VPC | loadBalancerId: <load-balancer-id> |
| Network ACL | networkAclId: <nacl-id> |
| Grupo de colocación para la VPC | placementGroupId: <placement-group-id> |
| Servicios de ruta privada para VPC | privatePathServiceGatewayId: <private-path-service-gateway-id> |
| Intervalo de direcciones públicas para VPC | publicAddressRangeId: <public-address-range-id> |
| Public Gateway for VPC | publicGatewayId: <pgw-id> |
| Reservas para VPC | reservationId: <reservation-id> |
| Security Group for VPC | securityGroupId: <default-sec-grp-id> |
| Instantáneas | snapshotId: <snapshot-id> |
| SSH Key for VPC | keyId:<key-id> |
| Subred | subnetId: <subnet-id> |
| Interfaz de red virtual | virtualNetworkInterfaceId:<virtual-network-interface-id> |
| Virtual Private Endpoint for VPC | endpointGatewayId:<endpoint-gateway-id> |
| Nube privada virtual | vpcId: <vpc-id> |
| Virtual Server for VPC | instanceId: <instance-id> |
| VPN for VPC | vpnGatewayID: <vpn-gateway-id> |
Revise las siguientes tablas que describen los tipos de tareas que permite cada rol cuando trabaja con el servicio VPC Infrastructure Services. Los roles de gestión de plataforma permiten a los usuarios realizar tareas en los recursos
de servicio en el nivel de plataforma. Por ejemplo, asignar acceso de usuario al servicio, crear o eliminar instancias y vincular instancias a aplicaciones. Los roles de acceso al servicio permiten al usuario acceder a VPC Infrastructure Services y a la capacidad de llamar a la API de VPC Infrastructure Services.
| Rol de plataforma | Descripción de acciones |
|---|---|
| Visor | Puede ver las instancias de servicio, pero no modificarlas. |
| Operador | Puede realizar acciones de plataforma necesarias para configurar y operar instancias de servicio, como ver un panel de control de servicio. |
| Editor | Puede realizar todas las acciones de la plataforma excepto gestionar la cuenta y asignar políticas de acceso. |
| Administrador | Puede realizar todas las acciones de la plataforma basadas en el recurso al que está asignado este rol, incluida la asignación de políticas de acceso a otros usuarios. |
| Rol de servicio | Descripción de acciones |
|---|---|
| Lector | Puede realizar acciones de sólo lectura dentro de un servicio, como ver recursos específicos del servicio. |
| Writer | Tiene permisos más allá del rol de lector, incluyendo la creación y edición de recursos específicos del servicio. |
| Gestor | Tiene permisos más allá del rol de escritor que le permiten completar acciones privilegiadas, según lo definido por el servicio. Además, puede crear y editar recursos específicos del servicio. |
| VPNClient | Sólo necesita seleccionar este rol si necesita asignar acceso a clientes VPN que tengan configurado el ID de usuario y la autenticación de código de acceso. Si necesita configurar el ID de usuario y la autenticación de código de acceso, consulte Configuración de ID de usuario y códigos de acceso. |
| Operador de red avanzado de servidor nativo | Tiene acceso para modificar la suplantación de IP y la infraestructura NAT en interfaces nativas. |
| Administración de la consola de servidor nativo | Puede acceder a la consola del servidor nativo. |
| Operador de suplantación de IP | Puede habilitar o inhabilitar la comprobación de suplantación de IP en instancias de servidor virtual. Otorgue este rol sólo si es necesario. |
| Administrador de la consola | Puede acceder a la consola de instancia de servidor virtual. Este rol sólo proporciona acceso a la consola y debe combinarse con otro rol que tenga acceso de operador al servidor virtual, como Operador, Editor o Administrador. |
Para obtener más información sobre las acciones exactas que se correlacionan con cada rol, consulte Infrastructure Services en la página de acciones y roles
de IAM.
Los enlaces siguientes le llevan directamente al servicio de infraestructura específico en la página de roles y acciones de IAM.
Funciones y acciones de IAM en red
- Redes en clúster para VPC
- Floating IP for VPC
- Flow Logs for VPC
- Load Balancer for VPC
- Network ACL
- Servicio de vía de acceso privada
- Rango de direcciones públicas
- Public Gateway
- Tablas de enrutamiento (Ver sección Nube Virtual > pestaña Acciones)
- Security Group for VPC
- Subredes
- Nube privada virtual
- Virtual Private Endpoint for VPC
- VPN for VPC
- Cliente VPN para VPC
- Interfaz de red virtual
Calcular funciones y acciones de IAM
Funciones y acciones de IAM de almacenamiento
- Block Storage for VPC
- Block Storage Snapshots for VPC
- Block Storage Multi Volume Snapshots para VPC
- Copia de seguridad como servicio para VPC
- File Storage for VPC
Algunas tareas de VPC requieren autorizaciones para varias acciones de IAM. Por ejemplo, crear una instancia de servidor virtual no sólo requiere is.instance.instance.create, sino también is.vpc.vpc.operate, is.subnet.subnet.operate,
is.security-group.security-group.operate y is.volume.volume.create. Es posible que sean necesarias acciones condicionales adicionales. Por ejemplo, si suministra una instancia en un host dedicado, necesita is.dedicated-host.dedicated-host-group.operate y is.dedicated-host.dedicated-host.operate. La referencia de API de nube privada virtual incluye una sección de autorización para cada llamada de API, por ejemplo, Crear una instancia.
Asignación de acceso a los servicios de infraestructura de VPC en la consola
Existen dos formas habituales de asignar accesos en la consola:
- Políticas de acceso por usuario. Puede gestionar políticas de acceso por usuario desde la página Gestionar > Acceso (IAM) > Usuarios de la consola. Si desea obtener más información sobre los pasos para asignar acceso IAM, consulte Gestión del acceso a los recursos.
- Grupos de acceso. Los grupos de acceso se utilizan para agilizar la gestión de accesos mediante la asignación de acceso a un grupo una vez y, a continuación, puede añadir o eliminar usuarios según sea necesario del grupo para controlar su acceso. Puede gestionar los grupos de acceso y su acceso desde la página Gestionar > Acceso (IAM) > Grupos de acceso de la consola. Para obtener más información, consulte Asignación de acceso a un grupo en la consola.
Asignación de acceso a los servicios de infraestructura de VPC en la CLI
Para obtener instrucciones paso a paso para asignar, eliminar y revisar el acceso, consulte Asignación acceso a recursos utilizando la CLI.
El ejemplo siguiente muestra un mandato para asignar el rol Viewer para VPC Infrastructure Services:
Utilice is para el nombre de servicio. Además, utilice comillas entre los nombres de funciones que contengan más de una palabra, como se muestra en este ejemplo.
ibmcloud iam user-policy-create USER@EXAMPLE.COM --service-name is --roles "Viewer"
Asignación de acceso a los servicios de infraestructura de VPC utilizando la API
Para obtener instrucciones paso a paso para asignar, eliminar y revisar el acceso, consulte Asignación de acceso a recursos mediante la API o Creación de una política API. Los nombres de recurso de nube de rol (CRN) de la tabla siguiente se utilizan para asignar acceso con la API.
| Nombre de rol | CRN de rol |
|---|---|
| Visor | crn:v1:bluemix:public:iam::::role:Viewer |
| Operador | crn:v1:bluemix:public:iam::::role:Operator |
| Editor | crn:v1:bluemix:public:iam::::role:Editor |
| Administrador | crn:v1:bluemix:public:iam::::role:Administrator |
| Lector | crn:v1:bluemix:public:iam::::serviceRole:Reader |
| Writer | crn:v1:bluemix:public:iam::::serviceRole:Writer |
| Gestor | crn:v1:bluemix:public:iam::::serviceRole:Manager |
| VPNClient | crn:v1:bluemix:public:iam::::serviceRole:VPNClient |
| Operador de red avanzado de servidor nativo | crn:v1:bluemix:public:iam::::serviceRole:BareMetalAdvancedNetworkOperator |
| Administración de la consola de servidor nativo | crn:v1:bluemix:public:iam::::serviceRole:BareMetalConsoleAdmin |
| Operador de suplantación de IP | crn:v1:bluemix:public:iam::::serviceRole:IPSpoofingOperator |
| Administrador de la consola | crn:v1:bluemix:public:iam::::serviceRole:VirtualServerConsoleAdmin |
El ejemplo siguiente es para asignar el rol Viewer para VPC Infrastructure Services:
Utilice is para el nombre del servicio y consulte la tabla de valores de ID de rol para asegurarse de que está utilizando el valor correcto para el 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))
Asignación de acceso a servicios de infraestructura de VPC utilizando Terraform
El ejemplo siguiente es para asignar el rol Viewer para VPC Infrastructure Services:
Utilice is para el nombre de servicio.
resource "ibm_iam_user_policy" "policy" {
ibm_id = "test@example.com"
roles = ["Viewer"]
resources {
service = "is"
}
}
Para obtener más información, consulte ibm_iam_user_policy.
Sugerencias
- El acceso a un recurso de contenedor no otorga automáticamente acceso a sus subrecursos. Por ejemplo, la concesión de acceso a una VPC no otorga acceso a las subredes en esa VPC.
- Del mismo modo, el acceso a un subrecurso no otorga acceso a su recurso de contenedor. Por ejemplo, la concesión de acceso a una subred no otorga acceso a la VPC de dicha subred.
- En general, para cambiar la relación entre varios recursos, el usuario debe tener acceso a cada recurso. Por ejemplo, para conectar una interfaz de red a un grupo de seguridad, el usuario debe tener acceso tanto a la interfaz de red como al grupo de seguridad.
Para obtener más información sobre la asignación de funciones de usuario en la consola, consulte Administración de permisos de usuario para recursos de VPC.
También puede asignar roles de usuario utilizando la interfaz de línea de mandatos (CLI) de IBM Cloud®. Puede seleccionar recursos utilizando atributos de recursos. Para obtener más información, consulte Atributos de recursos de VPC.
Grupos de recursos
Un grupo de recursos es un conjunto de recursos, como una VPC completa o una única subred, que se asocian para establecer la autorización y el uso. Podría considerar que un grupo de recursos es una colección de recursos de la infraestructura que puede utilizar un proyecto, un departamento o un equipo.
Las grandes empresas pueden dividir una VPC en varios grupos de recursos, mientras que las compañías más pequeñas podrían necesitar solo un grupo de recursos porque todos los miembros del equipo tienen acceso a toda la VPC. Si está familiarizado con OpenStack, un grupo de recursos es similar en concepto a un Proyecto en OpenStack Keystone.
La asignación de un recurso a un grupo de recursos solo se puede realizar cuando se crea el recurso. Los recursos no pueden cambiar de grupo de recursos después de que se creen.
Si desea utilizar varios grupos de recursos, es conveniente planificar cómo desea asignar los recursos y los usuarios de su organización a cada grupo de recursos.
Para obtener más información sobre el grupo de recursos, consulte Grupos de recursos.