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.

IAM-Benutzerrollen und -aktionen
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 ibmcloud ks cluster pull-secret apply verwenden möchten, um die geheimen Pull-Schlüssel für einen vorhandenen Cluster zu konfigurieren, müssen Sie über die Administratorrolle verfügen. Weitere Informationen finden Sie unter "Vorbereiten Ihres Kontos für die Erstellung von Clustern ".

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.

IAM-Service-Zugriffsrollen und -Aktionen
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-registry lauten.
  • 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.

Serviceaktionen und -vorgänge zur Konfiguration Container Registry
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.

ibmcloud cr private-only Für Ihr Konto Pull- oder Push-Operationen für Images über öffentliche Netzverbindungen verhindern oder zulassen.

Manager
container-registry.exemption.list ibmcloud cr exemption-list Ihre Vulnerability Advisor-Ausnahmerichtlinien für Sicherheitsprobleme auflisten.

ibmcloud cr exemption-types Typen der Sicherheitsprobleme auflisten, für die Ausnahmen festgelegt werden können.

Leseberechtigter, Manager
container-registry.exemption.manager ibmcloud cr exemption-add Vulnerability Advisor-Ausnahmerichtlinie für ein Sicherheitsproblem erstellen.

ibmcloud cr exemption-rm Vulnerability Advisor-Ausnahmerichtlinie für ein Sicherheitsproblem löschen.

Manager
container-registry.namespace.create ibmcloud cr namespace-add Namensbereich erstellen

. ibmcloud cr namespace-assign Namensbereich einer Ressourcengruppe zuordnen.

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.

Serviceaktionen und -einsätze zur Nutzung von Container Registry
Aktion Operation für Service Rolle
container-registry.image.delete docker trust revoke Signatur für ein Container-Image löschen.

ibmcloud cr image-prune-untagged Löschen Sie alle Images ohne Tags in Ihrem Container Registry-Konto.

ibmcloud cr image-rm Ein oder mehrere Container-Images löschen.

ibmcloud cr image-untag Entfernen Sie einen oder mehrere Tags aus jedem angegebenen Container-Image in Container Registry.

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.

ibmcloud cr retention-run Namensbereiche bereinigen, wobei nur die Container-Images aufbewahrt werden, die Ihren Kriterien entsprechen.

Schreibberechtigter, Manager

Um ibmcloud cr retention-run und ibmcloud cr retention-policy-set auszuführen, müssen Sie über die Berechtigungen eines Managers oder die Berechtigungen eines Leseberechtigten und eines Schreibberechtigten verfügen.

container-registry.image.inspect ibmcloud cr image-inspect Details zu einem bestimmten Container-Image anzeigen.

ibmcloud cr manifest-inspect Inhalt des Manifests für ein Image anzeigen.

Leseberechtigter, Manager
container-registry.image.list ibmcloud cr image-digests Alle Container-Images auflisten, einschließlich Images ohne Tags.

ibmcloud cr image-list Mit Tags versehene Container-Images auflisten

. ibmcloud cr image-prune-untagged Löschen Sie alle Images ohne Tags in Ihrem Container Registry-Konto.

ibmcloud cr trash-list Container-Images im Papierkorb anzeigen.

Leseberechtigter, Manager
container-registry.image.pull docker pullContainer-Image mit Pull-Operation extrahieren.

docker trust inspect Signatur für ein Container-Image untersuchen.

ibmcloud cr image-tag Container-Image erstellen, das auf ein Quellenimage verweist.

ibmcloud cr vulnerability-assessment Sicherheitslückenanalysebericht für Ihr Container-Image anzeigen.

Reader, Writer, Manager
container-registry.image.push docker push Container-Image mit Push-Operation übertragen.

docker trust sign Container-Image signieren.

ibmcloud cr image-restore Gelöschtes Container-Image aus dem Papierkorb wiederherstellen.

ibmcloud cr image-tag Container-Image erstellen, das auf ein Quellenimage verweist.

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.

ibmcloud cr retention-run Namensbereiche bereinigen, wobei nur die Container-Images aufbewahrt werden, die Ihren Kriterien entsprechen.

Schreibberechtigter, Manager

Um ibmcloud cr retention-run und ibmcloud cr retention-policy-set auszuführen, müssen Sie über die Berechtigungen eines Managers oder die Berechtigungen eines Leseberechtigten und eines Schreibberechtigten verfügen.

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.

Rollen-ID-Werte für die API-Verwendung
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.