IAM-Zugriff für Container Registry verwalten
Steuern Sie den Benutzerzugriff auf Container Registry, indem Sie mithilfe von IAM-Zugriffsrichtlinien und -Rollen festlegen, welche Aktionen Benutzer ausführen dürfen.
Jedem Benutzer, der in Ihrem Konto auf den Dienst IBM Cloud Container Registry zugreift, muss eine IAM -ZugriffsrichtlinieEine Methode, mit der Benutzern, Service-IDs und Zugriffsgruppen Zugriffsberechtigungen für Kontoressourcen erteilt werden. Eine Zugriffsrichtlinie enthält ein Subjekt, ein Ziel und eine Rolle. mit einer IAM-Rolle zugewiesen werden. Ein Benutzer kann auch Mitglied einer Zugriffsgruppe sein, der IAM-Zugriffsrichtlinien zugewiesen sind, die eine IAM-Rolle gewähren. Überprüfen Sie die folgenden Rollen, Aktionen und mehr, um die beste Methode für die Zuweisung von Zugriff auf Container Registry zu bestimmen.
Weitere Informationen zu IAM finden Sie unter Erste Schritte mit IBM unter Cloud Identity and Access Management.
Probieren Sie das Tutorial Zugriff auf Container Registry Ressourcen gewähren aus.
Zugriffsrichtlinien
Die IAM-Zugriffsrichtlinie, die Sie Benutzern in Ihrem Konto zuordnen, legt die Aktionen fest, die ein Benutzer im Kontext des Service oder der von Ihnen ausgewählten Instanz ausführen kann. Die zulässigen Aktionen werden angepasst und von Container Registry als Operationen definiert, die für den Service durchgeführt werden können. Jede Aktion wird einer IAM-Plattform oder -Servicerolle zugeordnet, die einem Benutzer zugeordnet werden kann.
Mit Richtlinien können Sie Zugriff auf unterschiedlichen Ebenen gewähren. Unter anderem stehen die folgenden Zugriffsebenen zur Auswahl:
- Zugriff auf den Service in Ihrem Konto
- Zugriff auf eine spezifische Ressource innerhalb des Service
- Zugriff auf alle für IAM aktivierten Services in Ihrem Konto
- Zugriff auf Ressourcen in einer Ressourcengruppe
Wenn Sie den Benutzerzugriff auf einen oder mehrere NamespacesEine Sammlung von Repositorys, die Images in einer Registry speichern. Ein Namensbereich ist einem IBM Cloud -Konto zugeordnet, das mehrere Namensbereiche enthalten kann. für eine ID einschränken möchten, die Sie für die Automatisierung verwenden, nutzen Sie eine IAM-Service-ID. Weitere Informationen zu Service-IDs finden Sie in Service-IDs erstellen und damit arbeiten.
Sie können Berechtigungen festlegen, sodass Sie den Zugriff auf Ressourcen innerhalb eines Namensraums auf RessourcengruppenebeneDie Umgebung und die Einschränkungen, die die darin enthaltenen Ressourceninstanzen einhalten. Ein Benutzer kann einer Ressourcengruppe zugeordnet werden, um die Onlinezusammenarbeit zu ermöglichen. konfigurieren können. Weitere Informationen finden Sie in Benutzerberechtigungen für die Arbeit mit Namensbereichen.
Weitere Informationen zum Aktivieren von Richtlinien für Container Registry finden Sie in IAM-Zugriffsrichtlinien definieren.
Rollen zuweisen
Nachdem Sie den Geltungsbereich der IAM-Zugriffsrichtlinie definiert haben, weisen Sie eine Rolle zu.
Wenn eine bestimmte Rolle und die damit verbundenen Aktionen nicht zu dem Anwendungsfall passen, den Sie abdecken möchten, können Sie eine benutzerdefinierte Rolle erstellen und die gewünschten Aktionen auswählen.
Sehen Sie sich die folgenden Tabellen an, in denen die Aktionen beschrieben werden, die jede Rolle im Container Registry-Service zulässt.
-
Plattformverwaltungsrollen ermöglichen es Benutzern, Aufgaben auf Service-Ressourcen auf Plattformebene auszuführen, beispielsweise Benutzern Zugriff auf den Service zuzuweisen, Instanzen zu erstellen oder zu löschen und Instanzen an Anwendungen zu binden.
-
Dienstzugriffsrollen ermöglichen Benutzern den Zugriff auf Container Registry sowie den Aufruf der Container Registry-API.
Weitere Informationen zu den genauen Aktionen, die den einzelnen Rollen zugeordnet sind, finden Sie unter IAM-Rollen und -Aktionen für Container Registry.
Weitere Informationen zum Zuweisen von Benutzerrollen in der IBM Cloud-Konsole finden Sie unter Zugriff auf Ressourcen verwalten.
Kontextbasierte Einschränkungen
Container Registry unterstützt auch kontextbasierte Einschränkungen. Sie können kontextbasierte Einschränkungen verwenden, um Zugriffsbeschränkungen für IBM Cloud-Ressourcen basierend auf dem Netzwerkstandort von Zugriffsanfragen zu definieren und durchzusetzen. Diese Einschränkungen ergänzen herkömmliche IAM-Richtlinien, die auf Identitäten basieren, und bieten so eine zusätzliche Schutzebene.
Weitere Informationen finden Sie unter "Schutz von Container Registry-Ressourcen mit kontextbasierten Einschränkungen ".
Plattformmanagementrollen
In der folgenden Tabelle sind die Aktionen, die Plattformmanagementrollen zugeordnet sind, im Detail aufgeführt. Plattformmanagementrollen ermöglichen es Benutzern, Tasks für Serviceressourcen auf Plattformebene auszuführen, z. B. Benutzerzugriff für den Service zuweisen oder Service-IDs erstellen oder löschen.
| Plattformmanagementrollen | Beschreibung der Aktionen | Beispielaktionen |
|---|---|---|
| Anzeigeberechtigter | Nicht unterstützt | Nicht zutreffend |
| Bearbeiter | Nicht unterstützt | Nicht zutreffend |
| Operator | Nicht unterstützt | Nicht zutreffend |
| Administrator | Zugriff für andere Benutzer konfigurieren.
Geheime Schlüssel für Pull-Operationen auf Cluster anwenden. |
Weitere Informationen zum Zuweisen von Benutzerrollen in der IBM Cloud-Konsole finden Sie unter Zugriff auf Ressourcen verwalten.
Um Cluster in IBM Cloud Kubernetes Service zu erstellen, die geheime Pull-Schlüssel für den Zugriff auf Images in Container Registry haben, müssen Sie über die Administratorrolle verfügen. Wenn Sie den Befehl |
Servicezugriffsrollen
In der folgenden Tabelle sind die Aktionen, die Servicezugriffsrollen zugeordnet sind, im Detail aufgeführt. Servicezugriffsrollen geben Benutzern Zugriff auf Container Registry sowie die Möglichkeit, die API Container Registry aufzurufen.
| Servicezugriffsrolle | Beschreibung der Aktionen | Beispielaktionen |
|---|---|---|
| Leseberechtigter | Die Rolle 'Leseberechtigter' kann Informationen anzeigen. | Images anzeigen, überprüfen und per Pull-Operation abrufen.
Namensbereiche anzeigen und analysieren. Kontingente anzeigen. Sicherheitslückenberichte anzeigen. Imagesignaturen anzeigen. Aufbewahrungsrichtlinien anzeigen. Inhalt des Papierkorbs anzeigen. Inhalt des Manifests für ein Image anzeigen. Vulnerability Advisor-Sicherheitsausnahmerichtlinien und Typen von Sicherheitsausnahmen auflisten. |
| Schreibberechtigter | Die Rolle 'Schreibberechtigter' kann Informationen bearbeiten. | Images mit Push-Operation übertragen, löschen und wiederherstellen.
Kontingente anzeigen. Images signieren. Aufbewahrungsrichtlinien festlegen und ausführen. Löschen Sie alle Images ohne Tags in Ihrem Container Registry-Konto. |
| Manager | Die Rolle 'Manager' kann alle Aktionen ausführen. | Images anzeigen, überprüfen, mit Pull-Operation extrahieren, mit Push-Operation übertragen, löschen und wiederherstellen.
Namensbereiche anzeigen, hinzufügen, analysieren und entfernen. Namensbereiche zu Ressourcengruppen zuordnen. Kontingente anzeigen und festlegen. Sicherheitslückenberichte anzeigen. Imagesignaturen anzeigen und erstellen. Preisstrukturpläne überprüfen und ändern. Aktivieren Sie die Durchsetzung der IAM-Zugriffsrichtlinie. Vulnerability Advisor-Ausnahmerichtlinien für Sicherheitsprobleme auflisten, hinzufügen und entfernen. Führen Sie die Arten von Sicherheitsausnahmen auf. Aufbewahrungsrichtlinien festlegen und ausführen. Inhalt des Papierkorbs anzeigen. Images wiederherstellen. Inhalt des Manifests für ein Image anzeigen. Für Ihr Konto Pull- oder Push-Operationen für Images über öffentliche Netzverbindungen verhindern oder zulassen. Überprüfen, ob die Verwendung öffentlicher Verbindungen für Push- oder Pull-Operationen für Images in Ihrem Konto verhindert wird. Löschen Sie alle Images ohne Tags in Ihrem Container Registry-Konto. |
Für die folgenden Container Registry-Befehle muss Ihnen mindestens eine der angegebenen Rollen zugeordnet sein, wie in der folgenden Tabellen dargestellt. Für die Erstellung einer Richtlinie, die den Zugriff auf Container Registry ermöglicht, müssen die folgenden Kriterien erfüllt sein.
- Der Servicename muss
container-registrylauten. - Die Serviceinstanz muss leer sein.
- Als Region muss die Region angegeben werden, auf die der Zugriff gewährt werden soll. Wird keine Angabe gemacht, wird der Zugriff auf alle Regionen gewährt.
Zugriffsrollen für die Konfiguration von Container Registry
Um einem Benutzer die Berechtigung zum Konfigurieren von Container Registry in Ihrem Konto zu erteilen, müssen Sie eine Richtlinie erstellen, die mindestens eine der Rollen in der folgenden Tabelle erteilt. Beim Erstellen Ihrer Richtlinie
dürfen Sie keinen Ressourcentyp (resource type) und keine Ressource (resource) angeben. Richtlinien für die Konfiguration von Container Registry dürfen nicht auf Ressourcengruppen-Ebene festgelegt werden.
Führen Sie beispielsweise den folgenden ibmcloud iam user-policy-create-Befehl aus. Dabei ist USER_EMAIL die E-Mail-Adresse des Benutzers, ist REGION die Region und ROLES steht für die Rolle(n),
über die der Benutzer verfügen soll.
ibmcloud iam user-policy-create USER_EMAIL --service-name container-registry --region REGION --roles ROLES
In der folgenden Tabelle sind Details zu Aktionen aufgeführt, die Serviceoperationen und Servicezugriffsrollen für die Konfiguration von Container Registry zugeordnet sind.
| Aktion | Operation für Service | Rolle |
|---|---|---|
container-registry.auth.get |
ibmcloud cr private-only Überprüfen, ob die Verwendung öffentlicher Verbindungen für Push- oder Pull-Operationen für Images in Ihrem Konto verhindert
wird. |
Manager |
container-registry.auth.set |
ibmcloud cr iam-policies-enable Durchsetzung der IAM-Zugriffsrichtlinie aktivieren.
|
Manager |
container-registry.exemption.list |
ibmcloud cr exemption-list Ihre Vulnerability Advisor-Ausnahmerichtlinien für Sicherheitsprobleme auflisten.
|
Leseberechtigter, Manager |
container-registry.exemption.manager |
ibmcloud cr exemption-add Vulnerability Advisor-Ausnahmerichtlinie für ein Sicherheitsproblem erstellen.
|
Manager |
container-registry.namespace.create |
ibmcloud cr namespace-add Namensbereich erstellen
. |
Manager |
container-registry.namespace.delete |
ibmcloud cr namespace-rm Namensbereich entfernen. |
Manager |
container-registry.plan.get |
ibmcloud cr plan Preisstrukturplan anzeigen. |
Manager |
container-registry.plan.set |
ibmcloud cr plan-upgrade Upgrade auf den Standardplan durchführen. |
Manager |
container-registry.quota.get |
ibmcloud cr quota Ihre aktuellen Kontingente für Datenverkehr und Speicher sowie Informationen zu diesen Kontingenten anzeigen. |
Reader, Writer, Manager |
container-registry.quota.set |
ibmcloud cr quota-set Angegebene Kontingente ändern. |
Manager |
container-registry.settings.get |
ibmcloud cr platform-metrics Registry-Service-Einstellungen für Zielkonto abrufen, z. B. ob die Plattformmetriken aktiviert wurden. |
Reader, Writer, Manager |
container-registry.settings.set |
ibmcloud cr platform-metrics Registry-Service-Einstellungen für Zielkonto aktualisieren, z. B. zum Aktivieren der Plattformmetriken. |
Manager |
Zugriffsrollen für die Verwendung von Container Registry
Um einem Benutzer die Berechtigung zum Zugriff auf Container Registry-Inhalte in Ihrem Konto zu erteilen, müssen Sie eine Richtlinie erstellen, die in der folgenden Tabelle enthaltene Rollen zuordnet. Beim Erstellen Ihrer Richtlinie können
Sie den Zugriff auf einen bestimmten Namensbereich einschränken, indem Sie den Ressourcentyp namespace und den Namen des Namensbereichs als Ressource angeben. Wenn Sie keinen Ressourcentyp (resource-type) und keine
Ressource (resource) angeben, erteilt die Richtlinie Zugriff auf alle Ressourcen in dem Konto. Wenn sich Ihr Namensbereich in einer Ressourcengruppe befindet, kann die Berechtigung mithilfe einer IAM-Zugriffsrichtlinie für diese
Ressourcengruppe erteilt werden.
Verwenden Sie beispielsweise den folgenden Befehl, um eine Benutzerrichtlinie zu erstellen. Dabei ist USER_EMAIL die E-Mail-Adresse des Benutzers, REGION die Region, ROLES die für den Benutzer vorgesehene(n)
Rolle(n) und NAMESPACE_NAME der Name des Namensbereichs.
ibmcloud iam user-policy-create USER_EMAIL --service-name container-registry --region REGION --roles ROLES [--resource-type namespace --resource NAMESPACE_NAME]
In der folgenden Tabelle sind Details zu Aktionen aufgeführt, die Serviceoperationen und Servicezugriffsrollen für die Verwendung von Container Registry zugeordnet sind.
| Aktion | Operation für Service | Rolle |
|---|---|---|
container-registry.image.delete |
docker trust revoke Signatur für ein Container-Image löschen.
|
Schreibberechtigter, Manager
Um |
container-registry.image.inspect |
ibmcloud cr image-inspect Details zu einem bestimmten Container-Image anzeigen.
|
Leseberechtigter, Manager |
container-registry.image.list |
ibmcloud cr image-digests Alle Container-Images auflisten, einschließlich Images ohne Tags.
.
|
Leseberechtigter, Manager |
container-registry.image.pull |
docker pullContainer-Image mit Pull-Operation extrahieren.
|
Reader, Writer, Manager |
container-registry.image.push |
docker push Container-Image mit Push-Operation übertragen.
|
Writer, Manager |
container-registry.namespace.list |
ibmcloud cr namespace-list Namensbereiche auflisten. |
Leseberechtigter, Manager |
container-registry.retention.analyze |
ibmcloud cr retention-policy-set Richtlinie für die Bereinigung des eigenen Namensbereichs festlegen, damit nur Container-Images beibehalten
werden, die die Kriterien erfüllen.
|
Schreibberechtigter, Manager
Um |
container-registry.retention.get |
Imageaufbewahrungsrichtlinie für einen Namensbereich mithilfe der API anzeigen (siehe IBM Cloud Container Registry-API). | Leseberechtigter, Manager |
container-registry.retention.set |
ibmcloud cr retention-policy-set Richtlinie für das Bereinigen Ihrer Namensbereiche festlegen, bei dem Sie nur Container-Images aufbewahren,
die Ihren Kriterien entsprechen. |
Writer, Manager |
container-registry.retention.list |
ibmcloud cr retention-policy-list Imageaufbewahrungsrichtlinien für Ihr Konto auflisten. |
Leseberechtigter, Manager |
Zugriffsrechte für Container Registry in der IBM Cloud-Konsole zuweisen
Sie können eine der folgenden Optionen verwenden, um in der IBM Cloud-Konsole Zugriffsrechte zuzuweisen:
- Zugriffsrichtlinien pro Benutzer. Sie können die Zugriffsrichtlinien pro Benutzer auf der Seite Verwalten > Zugriff (IAM) > Benutzer in der IBM Cloud-Konsole verwalten. Weitere Informationen über die Schritte zur Zuweisung von IAM-Zugriff finden Sie unter Zuweisung von Zugriff auf Ressourcen in der Konsole.
- Zugriffsgruppen. Zugriffsgruppen werden verwendet, um das Zugriffsmanagement zu optimieren, indem einer Gruppe einmal Zugriff zugewiesen wird. Anschließend können Sie Benutzer nach Bedarf zur Gruppe hinzufügen oder entfernen, um deren Zugriff zu steuern. Sie verwalten Zugriffsgruppen und deren Zugriffsrechte auf der Seite Verwalten > Zugriff (IAM) > Zugriffsgruppen in der IBM Cloud-Konsole. Weitere Informationen finden Sie unter "Zugriff auf eine Gruppe in der Konsole zuweisen ".
Zugriffsrechte für Container Registry in der Befehlszeilenschnittstelle (CLI) zuweisen
Schrittweise Anleitungen zum Zuweisen, Entfernen und Prüfen des Zugriffs finden Sie unter Zugriff auf Ressourcen über die Befehlszeilenschnittstelle zuweisen.
Das folgende Beispiel zeigt einen Befehl zur Zuweisung der Rolle Manager für Container Registry an einen Benutzer, wobei USER_EMAIL die E-Mail-Adresse des Benutzers ist.
Verwenden Sie container-registry als Servicenamen.
ibmcloud iam user-policy-create USER_EMAIL --service-name container-registry --roles Manager
Zugriff auf Container Registry über die API zuweisen
Schrittweise Anweisungen zum Zuweisen, Entfernen und Prüfen des Zugriffs finden Sie unter Zugriff auf Ressourcen über die API zuweisen oder Richtlinie erstellen in der API-Dokumentation. Die Cloudressourcennamen (CRN) der Rolle in der folgenden Tabelle werden verwendet, um Zugriff mit der API zuzuweisen.
| Rollenname | Rollen-CRN |
|---|---|
| Administrator | crn:v1:bluemix:public:container-registry::::serviceRole:Administrator |
| Leseberechtigter | crn:v1:bluemix:public:container-registry::::serviceRole:Reader |
| Schreibberechtigter | crn:v1:bluemix:public:container-registry::::serviceRole:Writer |
| Manager | crn:v1:bluemix:public:container-registry::::serviceRole:Manager |
Im folgenden Beispiel wird die Rolle Manager für Container Registry zugeordnet:
Verwenden Sie für container-registry den Servicenamen und beziehen Sie sich auf die Tabelle mit den Rollen-ID-Werten, um sicherzustellen, dass Sie den richtigen Wert für die CRN verwenden.
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))
Zugriff auf Container Registry mithilfe von Terraform zuweisen
Im folgenden Beispiel wird die Rolle Manager für Container Registry zugeordnet:
Verwenden Sie container-registry als Servicenamen.
resource "ibm_iam_user_policy" "policy" {
ibm_id = "test@example.com"
roles = ["Manager"]
resources {
service = "container-registry"
}
}
Weitere Informationen finden Sie ibm_iam_user_policy in der Terraform-Dokumentation.