Gestione dell'accesso IAM per Container Registry
Controlla l'accesso degli utenti a Container Registry utilizzando le politiche di accesso e i ruoli IAM per definire quali azioni gli utenti possono eseguire.
A ogni utente che accede al servizio IBM Cloud Container Registry dal proprio account deve essere assegnata una politica di accessoUn metodo per concedere l'accesso alle risorse dell'account a utenti, ID servizio e gruppi di accesso. Una politica di accesso include un oggetto, una destinazione e un ruolo. IAM con un ruolo IAM. Un utente può anche essere un membro di un gruppo di accesso con politiche di accesso IAM assegnate che concedono un ruolo IAM. Esamina i seguenti ruoli, azioni e altro ancora per determinare il modo migliore per assegnare l'accesso a Container Registry.
Per ulteriori informazioni su IAM, consultare la guida introduttiva su IBM Cloud Identity and Access Management.
Prova il tutorial Concessione dell'accesso alle risorse di Container Registry.
Politiche di accesso
La politica di accesso IAM che assegni agli utenti nel tuo account determina le azioni che un utente può eseguire nel contesto del servizio o dell'istanza specifica che selezioni. Le azioni consentite sono personalizzate e definite da Container Registry come operazioni di cui è consentita l'esecuzione sul servizio. Ogni azione è associata a un ruolo del servizio o della piattaforma IAM che puoi assegnare a un utente.
Le politiche consentono di concedere l'accesso a diversi livelli. Alcune opzioni prevedono i seguenti livelli di accesso:
- Accesso al servizio nel tuo account
- Accesso a una risorsa specifica all'interno del servizio
- Accesso a tutti i servizi abilitati a IAM nel tuo account
- Accesso alle risorse all'interno di un gruppo di risorse
Se si desidera limitare l'accesso degli utenti a uno o più spazi dei nomiUna raccolta di repository che memorizzano le immagini in un registro. Uno spazio dei nomi è associato a un account IBM Cloud , che può includere più spazi dei nomi. per un ID utilizzato per l'automazione, utilizzare un ID di servizio IAM. Per ulteriori informazioni sugli ID servizio, consulta Creazione e gestione degli ID servizio.
Puoi configurare le autorizzazioni in modo da poter configurare l'accesso alle risorse in un namespace al livello gruppo di risorseL'ambiente e i vincoli che vengono rispettati delle istanze della risorsa contenute. Un utente può essere associato a un gruppo di risorse per abilitare la collaborazione.. Per ulteriori informazioni, vedi Autorizzazioni utente per gestire gli spazi dei nomi.
Per ulteriori informazioni sull'attivazione delle politiche per Container Registry, consulta Definizione delle politiche di accesso IAM.
Assegna i ruoli
Dopo aver definito l'ambito della politica di accesso IAM, si assegna un ruolo.
Se un ruolo specifico e le sue azioni non si adattano al caso d'uso che si desidera affrontare, è possibile creare un ruolo personalizzato e scegliere le azioni da includere.
Esamina le tabelle seguenti che descrivono le azioni che ogni ruolo consente all'interno del servizio Container Registry.
-
I ruoli di gestione della piattaforma consentono agli utenti di eseguire operazioni sulle risorse del servizio a livello di piattaforma, ad esempio assegnare l'accesso al servizio agli utenti, creare o eliminare istanze e associare le istanze alle applicazioni.
-
I ruoli di accesso del servizio abilitano gli utenti ad accedere a Container Registry e alla capacità di richiamare l'API Container Registry.
Per ulteriori informazioni sulle azioni esatte associate a ciascun ruolo, vedi Ruoli e azioni IAM per Container Registry.
Per ulteriori informazioni sull'assegnazione dei ruoli utente nella console IBM Cloud, vedere Gestione dell'accesso alle risorse.
Limitazioni basate sul contesto
Container Registry supporta anche le restrizioni basate sul contesto. Puoi utilizzare le restrizioni basate sul contesto per definire e applicare le restrizioni dell'accesso per le risorse IBM Cloud basate sull'ubicazione di rete delle richieste di accesso. Queste restrizioni funzionano con le tradizionali politiche IAM, che sono basate sull'identità, per fornire un altro livello di protezione.
Per ulteriori informazioni, vedi Protezione delle risorse Container Registry con restrizioni basate sul contesto.
Ruoli di gestione della piattaforma
La seguente tabella illustra le azioni che sono associate ai ruoli di gestione della piattaforma. I ruoli di gestione della piattaforma consentono agli utenti di eseguire attività sulle risorse del servizio a livello di piattaforma, ad esempio l'assegnazione dell'accesso utente al servizio e la creazione o eliminazione degli ID servizio.
| Ruoli di gestione della piattaforma | Descrizione delle azioni | Azioni di esempio |
|---|---|---|
| Visualizzatore | Non supportato | Non applicabile |
| Editor | Non supportato | Non applicabile |
| Operatore | Non supportato | Non applicabile |
| Amministratore | Configurare l'accesso per gli altri utenti.
Applicare i pull secret ai cluster. |
Per ulteriori informazioni sull'assegnazione dei ruoli utente nella console IBM Cloud, vedere Gestione dell'accesso alle risorse.
Per creare cluster in IBM Cloud Kubernetes Service dotati di secret pull per accedere alle immagini presenti in Container Registry, è necessario disporre del ruolo di amministratore. Per utilizzare il comando |
Ruoli di accesso al servizio
La seguente tabella descrive le azioni associate ai ruoli di accesso al servizio. I ruoli di accesso del servizio forniscono agli utenti l'accesso a Container Registry e la capacità di richiamare l'API Container Registry.
| Ruolo di accesso al servizio | Descrizione delle azioni | Azioni di esempio |
|---|---|---|
| Lettore | Il ruolo Lettore può visualizzare le informazioni. | Visualizza, ispeziona ed esegui il pull di immagini.
Visualizza e analizza gli spazi dei nomi. Visualizza le quote. Visualizza i report di vulnerabilità. Visualizza le firme dell'immagine. Visualizza le politiche di conservazione. Visualizza il contenuto del cestino. Visualizza il contenuto del manifest per un'immagine. Elenca le politiche di esenzione per la sicurezza nel controllo vulnerabilità e i tipi di esenzioni per la sicurezza. |
| Scrittore | Il ruolo Scrittore può modificare le informazioni. | Inserisci, elimina e ripristina le immagini.
Visualizza le quote. Firma le immagini. Imposta ed esegui le politiche di conservazione. Elimina tutte le immagini senza tag dal tuo account Container Registry. |
| Gestore | Il ruolo Gestore può eseguire tutte le azioni. | Visualizza, controlla, estrai, inserisci, elimina e ripristina le immagini.
Visualizza, aggiungi, analizza e rimuovi gli spazi dei nomi. Assegna spazi dei nomi ai gruppi di risorse. Visualizza e imposta le quote. Visualizza i report di vulnerabilità. Visualizza e crea le firme dell'immagine. Esamina e modifica i piani dei prezzi. Abilita l'applicazione delle politiche di accesso IAM. Elenca, aggiungi e rimuovi le politiche di esenzione per i problemi di sicurezza del controllo vulnerabilità. Elenca i tipi di esenzioni in materia di sicurezza. Imposta ed esegui le politiche di conservazione. Visualizza il contenuto del cestino. Ripristina le immagini. Visualizza il contenuto del manifest per un'immagine. Impedisci o consenti i pull o i push di immagini sulle connessioni di rete pubbliche per il tuo account. Controlla se l'utilizzo di connessioni pubbliche non è consentito per i push o i pull di immagini nel tuo account. Elimina tutte le immagini senza tag dal tuo account Container Registry. |
Per i seguenti comandi Container Registry, devi disporre di almeno uno dei ruoli specificati come mostrato nelle seguenti tabelle. Per creare una politica che consente l'accesso a Container Registry, devi creare una politica a cui si applicano i seguenti criteri.
- Il nome del servizio è
container-registry. - L'istanza del servizio è vuota.
- La regione è la regione a cui si desidera concedere l'accesso o è vuota per concedere l'accesso a tutte le regioni.
Ruoli di accesso per la configurazione di Container Registry
Per concedere a un utente l'autorizzazione a configurare Container Registry nel proprio account, è necessario creare una politica che assegni uno o più dei ruoli riportati nella tabella seguente. Quando si crea la propria policy, non è consentito
specificare resource type o resource. Le politiche per la configurazione di Container Registry non devono essere impostate a livello di gruppo di risorse.
Ad esempio, eseguire il seguente comando ibmcloud iam user-policy-create. Dove USER_EMAIL è l'indirizzo email dell'utente, REGION è la regione e ROLES è il ruolo o i ruoli che si desidera
che l'utente abbia.
ibmcloud iam user-policy-create USER_EMAIL --service-name container-registry --region REGION --roles ROLES
La seguente tabella illustra le azioni che sono associate alle operazioni sul servizio e ai ruoli di accesso al servizio per la configurazione di Container Registry.
| Azione | Operazione sul servizio | Ruolo |
|---|---|---|
container-registry.auth.get |
ibmcloud cr private-only Controlla se l'utilizzo di connessioni pubbliche non è consentito per i push o i pull di immagini nel tuo account. |
Gestore |
container-registry.auth.set |
ibmcloud cr iam-policies-enable Abilita l'applicazione delle politiche di accesso IAM.
|
Gestore |
container-registry.exemption.list |
ibmcloud cr exemption-list Elenca le politiche di esenzione relative a Vulnerability Advisor in materia di sicurezza.
|
Lettore, Gestore |
container-registry.exemption.manager |
ibmcloud cr exemption-add Creare una politica di esenzione " Vulnerability Advisor " per un problema di sicurezza.
|
Gestore |
container-registry.namespace.create |
ibmcloud cr namespace-add Crea uno spazio dei nomi.
|
Gestore |
container-registry.namespace.delete |
ibmcloud cr namespace-rm Rimuovi uno spazio dei nomi. |
Gestore |
container-registry.plan.get |
ibmcloud cr plan Visualizza il tuo piano dei prezzi. |
Gestore |
container-registry.plan.set |
ibmcloud cr plan-upgrade Esegui l'upgrade al piano standard. |
Gestore |
container-registry.quota.get |
ibmcloud cr quota Visualizza le tue quote correnti per traffico e archiviazione e le informazioni di utilizzo rispetto a tali quote. |
Lettore, Scrittore e Gestore |
container-registry.quota.set |
ibmcloud cr quota-set Modifica la quota specificata. |
Gestore |
container-registry.settings.get |
ibmcloud cr platform-metrics Ottieni le impostazioni del servizio di registro per l'account di destinazione, ad esempio se le metriche della
piattaforma sono abilitate. |
Lettore, Scrittore e Gestore |
container-registry.settings.set |
ibmcloud cr platform-metrics Aggiornare le impostazioni del servizio di registro per l'account di destinazione, come ad esempio l'abilitazione
delle metriche della piattaforma. |
Gestore |
Ruoli di accesso per l'utilizzo di Container Registry
Per concedere a un utente l'autorizzazione ad accedere ai contenuti di " Container Registry " nel proprio account, è necessario creare una politica che assegni uno o più dei ruoli riportati nella tabella seguente. Quando si crea
una policy, è possibile limitare l'accesso a uno spazio dei nomi specifico specificando il tipo di risorsa " namespace " e il nome dello spazio dei nomi come risorsa. Se non si specifica resource-type e resource, la politica concede l'accesso a tutte le risorse presenti nell'account. In alternativa, se il proprio namespace si trova all'interno di un gruppo di risorse, è possibile concedere l'autorizzazione utilizzando una
politica di accesso IAM su quel gruppo di risorse.
Ad esempio, utilizza il seguente comando per creare una politica utente. Dove USER_EMAIL è l'indirizzo email dell'utente, REGION è la regione, ROLES è il ruolo o i ruoli che vuoi che l'utente abbia e
NAMESPACE_NAME è il nome dello spazio dei nomi.
ibmcloud iam user-policy-create USER_EMAIL --service-name container-registry --region REGION --roles ROLES [--resource-type namespace --resource NAMESPACE_NAME]
La seguente tabella illustra le azioni che sono associate alle operazioni sul servizio e ai ruoli di accesso al servizio per l'utilizzo di Container Registry.
| Azione | Operazione sul servizio | Ruolo |
|---|---|---|
container-registry.image.delete |
docker trust revoke Elimina la firma di un'immagine del container.
|
Writer, Manager
Per gestire |
container-registry.image.inspect |
ibmcloud cr image-inspect Visualizza i dettagli relativi a una specifica immagine di container.
|
Lettore, Gestore |
container-registry.image.list |
ibmcloud cr image-digests Elenca tutte le tue immagini dei container, comprese quelle senza tag.
|
Lettore, Gestore |
container-registry.image.pull |
docker pull Scarica un'immagine del container.
|
Lettore, Scrittore e Gestore |
container-registry.image.push |
docker push Pubblica un'immagine del container.
|
Scrittore, Gestore |
container-registry.namespace.list |
ibmcloud cr namespace-list Elenca i tuoi spazi dei nomi. |
Lettore, Gestore |
container-registry.retention.analyze |
ibmcloud cr retention-policy-set Imposta una politica per ripulire i tuoi spazi dei nomi, conservando solo le immagini dei container
che soddisfano i tuoi criteri.
|
Reader, Manager
Per eseguire |
container-registry.retention.get |
Visualizza la politica di conservazione delle immagini per uno spazio dei nomi utilizzando l'API; vedi IBM Cloud Container Registry API. | Lettore, Gestore |
container-registry.retention.set |
ibmcloud cr retention-policy-set Imposta una politica per ripulire i tuoi spazi dei nomi conservando solo le immagini contenitore che
soddisfano i tuoi criteri. |
Scrittore, Gestore |
container-registry.retention.list |
ibmcloud cr retention-policy-list Elenca le politiche di conservazione delle immagini per il tuo account. |
Lettore, Gestore |
Assegnazione dell'accesso a Container Registry nella console IBM Cloud
È possibile utilizzare una delle seguenti opzioni per assegnare l'accesso nella console IBM Cloud:
- Politiche di accesso per utente. È possibile gestire i criteri di accesso per utente dalla pagina Gestione > Accesso (IAM) > Utenti della console IBM Cloud. Per ulteriori informazioni sulla procedura di assegnazione dell'accesso IAM, vedere Assegnazione dell'accesso alle risorse nella console.
- 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 come richiesto dal gruppo per controllarne l'accesso. I gruppi di accesso e il loro accesso si gestiscono dalla pagina Gestione > Accesso (IAM) > Gruppi di accesso della console IBM Cloud. Per ulteriori informazioni, vedi Assegnazione dell'accesso a un gruppo nella console.
Assegnazione dell'accesso a Container Registry nell'interfaccia a riga di comando (CLI)
Per istruzioni dettagliate per l'assegnazione, la rimozione e la revisione dell'accesso, vedi Assegnazione dell'accesso alle risorse utilizzando la CLI.
L'esempio seguente mostra un comando per assegnare il ruolo Manager per Container Registry a un utente, dove USER_EMAIL è l'indirizzo e-mail dell'utente.
Utilizzare container-registry per il nome servizio.
ibmcloud iam user-policy-create USER_EMAIL --service-name container-registry --roles Manager
Assegnazione dei diritti di accesso a Container Registry tramite l'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 politica nella documentazione API. I CRN (role cloud resource names) nella tabella seguente vengono usati per assegnare l'accesso con l'API.
| Nome ruolo | CRN ruolo |
|---|---|
| Amministratore | crn:v1:bluemix:public:container-registry::::serviceRole:Administrator |
| Lettore | crn:v1:bluemix:public:container-registry::::serviceRole:Reader |
| Scrittore | crn:v1:bluemix:public:container-registry::::serviceRole:Writer |
| Gestore | crn:v1:bluemix:public:container-registry::::serviceRole:Manager |
Il seguente esempio è per l'allocazione del ruolo Manager per Container Registry:
Utilizzare container-registry per il nome del servizio e fare riferimento alla tabella dei valori dell'ID ruolo per assicurarsi 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": "Manager role for Container Registry",
"subjects": [
{
"attributes": [
{
"name": "iam_id",
"value": "IBMid-123453user"
}
]
}'
],
"roles":[
{
"role_id": "crn:v1:bluemix:public:container-registry::::serviceRole:Manager"
}
],
"resources":[
{
"attributes": [
{
"name": "accountId",
"value": "$ACCOUNT_ID"
},
{
"name": "serviceName",
"value": "container-registry"
}
]
}
]
}
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:container-registry::::serviceRole:Manager")
.build();
ResourceAttribute accountIdResourceAttribute = new ResourceAttribute.Builder()
.name("accountId")
.value("ACCOUNT_ID")
.operator("stringEquals")
.build();
ResourceAttribute serviceNameResourceAttribute = new ResourceAttribute.Builder()
.name("serviceName")
.value("container-registry")
.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:container-registry::::serviceRole:Manager',
},
];
const accountIdResourceAttribute = {
name: 'accountId',
value: 'ACCOUNT_ID',
operator: 'stringEquals',
};
const serviceNameResourceAttribute = {
name: 'serviceName',
value: 'container-registry',
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:container-registry::::serviceRole:Manager')
account_id_resource_attribute = ResourceAttribute(
name='accountId', value='ACCOUNT_ID')
service_name_resource_attribute = ResourceAttribute(
name='serviceName', value='container-registry')
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:container-registry::::serviceRole:Manager"),
}
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("container-registry"),
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 Container Registry utilizzando Terraform
Il seguente esempio è per l'allocazione del ruolo Manager per Container Registry:
Utilizzare container-registry per il nome servizio.
resource "ibm_iam_user_policy" "policy" {
ibm_id = "test@example.com"
roles = ["Manager"]
resources {
service = "container-registry"
}
}
Per ulteriori informazioni, vedere ibm_iam_user_policy nella documentazione di Terraform.