Gestione dell'accesso IAM per IBM Cloud Direct Link
IBM Cloud® Identity and Access Management (IAM) controlla l'accesso a Direct Link gateway per gli utenti nel tuo account. A ogni utente che accede al servizio Direct Link nel proprio account deve essere assegnato un criterio di accesso con un ruolo IAM. Rivedere i seguenti ruoli, azioni e altro per aiutare a determinare il modo migliore per assegnare l'accesso a Direct Link.
IBM Cloud® Direct Link abilita la connettività tra le risorse in loco del cliente alle risorse IBM Cloud ospitate nelle infrastrutture VPC (Virtual Private Cloud) e classiche.
La normativa di accesso che si assegna agli utenti nel proprio account determina quali azioni un utente può eseguire all'interno del contesto del servizio o dell'istanza specifica che si seleziona. Il collegamento diretto personalizza e definisce le azioni consentite come operazioni che possono essere eseguite sul servizio. Ogni azione è mappata su una piattaforma IAM o un ruolo di servizio che è possibile assegnare ad un utente.
Se un ruolo specifico e le sue azioni non si adattano al caso di utilizzo che si sta cercando di affrontare, è possibile creare un ruolo personalizzato e scegliere le azioni da includere.
I criteri di accesso IAM consentono di concedere l'accesso a diversi livelli. Alcune opzioni includono:
- Accesso attraverso l'istanza del servizio Direct Link nel proprio account
- Accesso a una singola istanza del servizio nel tuo account
- Accesso a una specifica risorsa all'interno di un'istanza
Revisionare la seguente tabella che delinea quali tipi di attività ogni ruolo consente quando si lavora con il servizio Direct Link. I ruoli di gestione della piattaforma consentono agli utenti di eseguire attività sulle risorse del servizio a livello di piattaforma, ad esempio assegnare l'accesso dell'utente al servizio e creare o eliminare istanze.
Direct Link non ha ruoli di accesso ai servizi, che consentono agli utenti di accedere a Direct Link e di chiamare l'API di Direct Link. Per informazioni sulle azioni esatte che sono mappate a ciascun ruolo, vedere Direct Link Connetti e Direct Link Dedicato.
Ruolo piattaforma | Descrizione delle azioni | Azioni di esempio |
---|---|---|
Amministratore | Consente a un utente di assegnare le politiche di accesso IAM Direct Link ad altri utenti. | Creare gateway Elimina gateway Modifica gateway Aggiungi una connessione virtuale a un gateway * Rimuovi una connessione virtuale da un gateway * Modifica una connessione virtuale (solo API) Aggiornamento politiche di accesso utente per il servizio |
Editor | Esegue tutte le azioni, inclusa la gestione dei gateway e delle connessioni virtuali. | Creare gateway Elimina gateway Modifica gateway Aggiungi una connessione virtuale a un gateway * Rimuovi una connessione virtuale da un gateway * Modifica una connessione virtuale (solo API) |
Viewer / Operatore | Esegue le azioni che non modificano lo stato delle risorse. | Elenca gateway Ottieni gateway Elenca le connessioni virtuali di un gateway Visualizza le connessioni virtuali di un gateway Recuperare le informazioni relative al gateway (avviso di completamento dell'autorizzazione) Visualizza le richieste di connessione in entrata* |
per aggiungere o rimuovere connessioni virtuali alle VPC, oppure per accettare o rifiutare una richiesta di connessione, l'utente deve avere anche i permessi di accesso alla piattaforma Editor o Administrator per la VPC. Per ulteriori informazioni, vedi VPC: introduzione a IAM.
Note:
- Tutte le risorse Direct Link esistono in un gruppo di risorse. La creazione di una risorsa Direct Link richiede l'accesso dell'Editor al gruppo di risorse selezionato.
- Per informazioni sull'assegnazione di ruoli utente nella console, vedi Gestione dell'accesso alle risorse.
Assegnazione dell'accesso a Direct Link nella console
Modi comuni per assegnare l'accesso nella console:
- Politiche di accesso per utente. È possibile gestire le policy di accesso per utente dalla pagina Gestisci > Accesso (IAM) > Utenti nella console. Per informazioni sulle operazioni di assegnazione dell'accesso IAM, consultare Gestione dell'accesso alle risorse.
- Gruppi di accesso. I gruppi di accesso sono utilizzati per snellire la gestione degli accessi assegnando l'accesso a un gruppo una volta, poi è possibile aggiungere o rimuovere gli utenti come necessario dal gruppo per controllarne l'accesso. Si gestiscono i gruppi di accesso e il loro accesso dalla pagina Gestisci > Accesso (IAM) > Gruppi di accesso nella console. Per ulteriori informazioni, consultare Assegnazione di accesso a un gruppo nella console.
Considerazioni sull'autorizzazione per le connessioni virtuali cross - account
La seguente tabella mostra le modifiche di autorizzazione per le connessioni virtuali incrociate.
Una connessione virtuale tra account significa che il gateway esiste in un account IBM Cloud e una connessione virtuale in tale gateway si connette a un VPC in un account IBM Cloud differente. Questa configurazione richiede considerazioni speciali sull'autorizzazione perché gli oggetti (il collegamento diretto e il VPC) e i relativi gruppi di risorse non esistono in entrambi gli account.
Account correlato | Funzionalità | Autorizzazione richiesta |
---|---|---|
Account gateway | Eventuali capacità non menzionate in questa tabella. | Nessuna modifica autorizzazione. |
Account gateway | Creare ed eliminare una connessione virtuale a contatore incrociato. | directlink.dedicated.edit O directlink.connect.edit Nessuna autorizzazione VPC richiesta al momento della creazione o dell'eliminazione. |
Account rete | Visualizza gateway di sola lettura e connessioni virtuali. | Servizio - livello directlink.dedicated.view o directlink.connect.view |
Account rete | Accettare e rifiutare le connessioni in sospeso. | Service - level directlink.dedicated.view o directlink.connect.view Aggiornamento autorizzazione sul VPC connesso. |
Account rete | DELETE connessione virtuale collegata. |
Service - level directlink.dedicated.view o directlink.connect.view Aggiornamento autorizzazione sul VPC connesso. |
Assegnazione dell'accesso a Direct Link nella CLI
Per istruzioni dettagliate per l'assegnazione, la rimozione e la revisione dell'accesso, consultare Assegnare risorse di accesso tramite CLI.
Il seguente esempio mostra un comando per l'assegnazione del ruolo Editor
a un utente:
Utilizzare directlink
per il nome del servizio. Inoltre, usare le quotazioni intorno ai nomi di ruolo che sono più di una parola come l'esempio qui.
ibmcloud iam user-policy-create USER@EXAMPLE.COM --service-name directlink --roles Editor
Assegnazione dell'accesso a Direct Link utilizzando l'API
Per istruzioni dettagliate sull'assegnazione, la rimozione e la revisione dell'accesso, vedere Assegnazione dell'accesso alle risorse utilizzando l'API o il Crea un documento API relativo alle policy. I nomi delle risorse cloud di ruolo (CRN) nella seguente tabella sono utilizzati per assegnare l'accesso con le API.
Nome ruolo | Ruolo CRN |
---|---|
Visualizzatore | crn:v1:bluemix:public:directlink::::serviceRole:Viewer |
Operatore | crn:v1:bluemix:public:directlink::::serviceRole:Operator |
Editor | crn:v1:bluemix:public:directlink::::serviceRole:Editor |
Amministratore | crn:v1:bluemix:public:directlink::::serviceRole:Administrator |
Lettore | crn:v1:bluemix:public:directlink::::serviceRole:Reader |
Scrittore | crn:v1:bluemix:public:directlink::::serviceRole:Writer |
Gestore | crn:v1:bluemix:public:directlink::::serviceRole:Manager |
Utilizzo directlink
per il nome del servizio e fai riferimento alla tabella dei valori dell'ID ruolo per assicurarti di utilizzare il valore corretto per il CRN.
La seguente policy assegna un ruolo di utente Writer a tutte le risorse serviceName=directlink
presenti nel conto.
curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H 'Authorization: Bearer $TOKEN' -H 'Content-Type: application/json' -d '{
"type": "access",
"description": "Writer role for Direct Link",
"subjects": [
{
"attributes": [{
"name": "iam_id",
"value": "IBMid-123453user"
}]
}],
"roles": [{
"roles_id": "crn:v1:bluemix:public:directlink::::serviceRole:Writer"
}],
"resources": [{
"attributes": [
{
"name": "accountId",
"value": "1234567890987654321"
},
{
"name": "serviceName",
"value": "directlink"
}]
}]
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:directlink::::serviceRole:Writer")
.build();
ResourceAttribute accountIdResourceAttribute = new ResourceAttribute.Builder()
.name("accountId")
.value("ACCOUNT_ID")
.operator("stringEquals")
.build();
ResourceAttribute serviceNameResourceAttribute = new ResourceAttribute.Builder()
.name("serviceName")
.value("directlink")
.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);
policy_subjects = PolicySubject(
attributes=[SubjectAttribute(name='iam_id', value='IBMid-123453user')])
policy_roles = PolicyRole(
role_id='crn:v1:bluemix:public:directlink::::serviceRole:Writer')
account_id_resource_attribute = ResourceAttribute(
name='accountId', value='ACCOUNT_ID')
service_name_resource_attribute = ResourceAttribute(
name='serviceName', value='directlink')
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:directlink::::serviceRole:Writer"),
}
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("directlink"),
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))
const policySubjects = [
{
attributes: [
{
name: 'iam_id',
value: 'IBMid-123453user',
},
],
},
];
const policyRoles = [
{
role_id: 'crn:v1:bluemix:public:directlink::::serviceRole:Writer',
},
];
const accountIdResourceAttribute = {
name: 'accountId',
value: 'ACCOUNT_ID',
operator: 'stringEquals',
};
const serviceNameResourceAttribute = {
name: 'serviceName',
value: 'directlink',
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)
});
Curl esempio 2
La seguente policy assegna un ruolo di utente Writer a tutte le risorse serviceName=directlink
di tipo dedicated
nel conto.
curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H 'Authorization: Bearer $TOKEN' -H 'Content-Type: application/json' -d '{
"type": "access",
"description": "Writer role for Direct Link Dedicated",
"subjects": [
{
"attributes": [{
"name": "iam_id",
"value": "IBMid-123453user"
}]
}],
"roles": [{
"roles_id": "crn:v1:bluemix:public:directlink::::serviceRole:Writer"
}],
"resources": [{
"attributes": [
{
"name": "accountId",
"value": "1234567890987654321"
},
{
"name": "serviceName",
"value": "directlink"
},
{
"name": "dedicatedId",
"value": "*"
}]
}]
Assegnazione dell'accesso a directlink
utilizzando Terraform
Il seguente esempio è per l'assegnazione del ruolo Editor
per directlink
:
Utilizzare directlink
per il nome del servizio.
resource "ibm_iam_user_policy" "policy" {
ibm_id = "test@example.com"
roles = ["Editor"]
resources {
service = "directlink"
}
}
Per ulteriori informazioni, consultare ibm_iam_user_policy.