Concedere l'accesso a IBM Cloud Logs
L'accesso alle risorse di configurazione di IBM Cloud per utenti e applicazioni nel tuo account è controllato da IBM Cloud® Identity and Access Management (IAM). A ogni utente o applicazione che accede al servizio IBM Cloud Logs nel vostro account deve essere assegnato un criterio di accesso con un ruolo IAM. Esamina i seguenti ruoli, azioni e altro ancora per determinare il modo migliore per assegnare l'accesso a IBM Cloud Logs.
Puoi assegnare l'accesso a IBM Cloud Logs utilizzando uno dei seguenti metodi:
-
Politiche di accesso per utente
-
Gruppi di accesso
I gruppi di accesso vengono utilizzati per semplificare la gestione degli accessi assegnando l'accesso a un gruppo una sola volta, quindi è possibile aggiungere o rimuovere gli utenti in base alle esigenze dal gruppo per controllarne l'accesso.
È possibile creare un gruppo di accesso per organizzare un insieme di utenti, ID servizio e profili di fiducia in un'unica entità che semplifica l'assegnazione degli accessi. È possibile assegnare un singolo criterio al gruppo invece di assegnare lo stesso accesso più volte per un singolo utente o ID servizio. Per ulteriori informazioni, vedi Configurazione dei gruppi di accesso.
Per organizzare un insieme di utenti e ID di servizio in un'unica entità che faciliti la gestione delle autorizzazioni IAM, utilizzare i gruppi di accesso. Puoi assegnare una sola politica al gruppo invece di assegnare lo stesso accesso più volte per ogni utente o ID servizio.
-
Profili attendibili
Puoi utilizzare i profili attendibili per concedere alle diverse identità IBM Cloud® l'accesso alle risorse nel tuo account. Concedere automaticamente agli utenti federati l'accesso al proprio account con condizioni basate sugli attributi SAML dalla directory aziendale. Oppure, utilizzare i profili di fiducia per impostare un'autorizzazione a grana fine per le applicazioni in esecuzione nelle risorse di calcolo. In questo modo, non è necessario creare ID servizio o chiavi API per le risorse di calcolo. Puoi anche stabilire l'affidabilità con i servizi o gli ID servizio IBM Cloud in un altro account per concedere l'accesso tra account. Per ulteriori informazioni, consultare Creazione di profili attendibili.
Se si dispone dell'autorizzazione IAM per la creazione di criteri e autorizzazioni, è possibile concedere solo il livello di accesso di cui si dispone come utente del servizio di destinazione. Ad esempio, se si dispone dell'accesso come spettatore per il servizio di destinazione, è possibile assegnare solo il ruolo di spettatore per l'autorizzazione. Se si tenta di assegnare un'autorizzazione più elevata, come quella di amministratore, potrebbe sembrare che l'autorizzazione sia concessa, tuttavia verrà assegnata solo l'autorizzazione di livello più alto che si possiede per il servizio di destinazione, cioè viewer.
Assegnazione dell'accesso a IBM Cloud Logs nella console
Ci sono due modi comuni per assegnare l'accesso a IBM Cloud Logs nella console:
-
Gruppi di accesso. Puoi gestire i gruppi di accesso e il relativo accesso dalla pagina Manage > Access (IAM) > Access groups nella console. Per ulteriori informazioni, vedi Assegnazione dell'accesso a un gruppo nella console.
-
Politiche di accesso per utente. Puoi gestire le politiche di accesso per utente dalla pagina Manage > Access (IAM) > Users nella console. Per informazioni sulla procedura per assegnare l'accesso IAM, vedi Gestione dell'accesso alle risorse.
Assegnazione dell'accesso a IBM Cloud Logs nella CLI
Per istruzioni dettagliate sull'assegnazione, la rimozione e la revisione dell'accesso, vedere Assegnazione dell'accesso alle risorse tramite la CLI.
Il seguente esempio mostra un comando per l'assegnazione del ruolo Viewer per IBM Cloud Logs:
Utilizzare logs per il nome servizio. Inoltre, utilizzare le virgolette per racchiudere i nomi dei ruoli che sono più di una parola.
ibmcloud iam user-policy-create name@example.com --service-name logs --roles "Viewer"
Assegnazione dell'accesso a IBM Cloud Logs tramite API
Per istruzioni dettagliate per l'assegnazione, la rimozione e la revisione dell'accesso, vedi Assegnazione dell'accesso alle risorse utilizzando l'API o Crea una documentazione API della politica. I CRN (role cloud resource names) nella tabella seguente vengono usati per assegnare l'accesso con l'API.
| Nome ruolo | CRN ruolo |
|---|---|
| Visualizzatore | crn:v1:bluemix:public:logs::::serviceRole:Viewer |
| Operatore | crn:v1:bluemix:public:logs::::serviceRole:Operator |
| Editor | crn:v1:bluemix:public:logs::::serviceRole:Editor |
| Amministratore | crn:v1:bluemix:public:logs::::serviceRole:Administrator |
Il seguente esempio è per l'assegnazione del ruolo Viewer per IBM Cloud Logs:
Utilizza logs come nome servizio e fai riferimento alla tabella dei valori ID ruolo per assicurarti di utilizzare il valore corretto per il CRN.
curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H 'Authorization: Bearer $TOKEN' -H 'Content-Type: application/json' -d '{
"type": "access",
"description": "Viewer role for IBM Cloud Logs",
"subjects": [
{
"attributes": [
{
"name": "iam_id",
"value": "IBMid-123453user"
}
]
}
],
"roles":[
{
"role_id": "crn:v1:bluemix:public:logs::::serviceRole:Viewer"
}
],
"resources":[
{
"attributes": [
{
"name": "accountId",
"value": "$ACCOUNT_ID"
},
{
"name": "serviceName",
"value": "logs"
}
]
}
]
}'
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:logs::::serviceRole:Viewer")
.build();
ResourceAttribute accountIdResourceAttribute = new ResourceAttribute.Builder()
.name("accountId")
.value("ACCOUNT_ID")
.operator("stringEquals")
.build();
ResourceAttribute serviceNameResourceAttribute = new ResourceAttribute.Builder()
.name("serviceName")
.value("logs")
.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:logs::::serviceRole:Viewer',
},
];
const accountIdResourceAttribute = {
name: 'accountId',
value: 'ACCOUNT_ID',
operator: 'stringEquals',
};
const serviceNameResourceAttribute = {
name: 'serviceName',
value: 'logs',
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:logs::::serviceRole:Viewer')
account_id_resource_attribute = ResourceAttribute(
name='accountId', value='ACCOUNT_ID')
service_name_resource_attribute = ResourceAttribute(
name='serviceName', value='logs')
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:logs::::serviceRole: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("logs"),
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))
Assegnazione dell'accesso a IBM Cloud Logs utilizzando Terraform
Il seguente esempio è per l'assegnazione del ruolo Viewer per IBM Cloud Logs:
Utilizzare logs per il nome servizio.
resource "ibm_iam_user_policy" "policy" {
ibm_id = "test@example.com"
roles = ["Viewer"]
resources {
service = "logs"
}
}
Per ulteriori informazioni, vedi la risorsa terraform ibm_iam_user_policy.