Zugriff zwischen Services erteilen

Mit IBM Cloud® Identity and Access Management (IAM) können Sie eine Autorisierung erstellen oder entfernen, mit der einem Service Zugriff auf einen anderen Service erteilt wird. Mithilfe der Autorisierungsdelegierung können Zugriffsrichtlinien, mit denen Zugriff auf abhängige Services erteilt wird, automatisch erstellt werden.

Viele der IAM-Funktionen konzentrieren sich auf die Verwaltung und Durchsetzung des Benutzer- und Anwendungszugriffs auf IBM Cloud Ressourcen. Es können jedoch andere Szenarios auftreten, bei denen Sie einem Service den Zugriff auf die Ressource eines Benutzers in einem anderen Service bereitstellen müssen. Diese Art der Zugriffsberechtigung wird als Autorisierung bezeichnet.

Bei einer Autorisierung ist der Quellenservice der Service, dem Zugriff auf den Zielservice erteilt wird. Die Rollen, die Sie auswählen, definieren die Zugriffsebene für den Quellenservice. Der Zielservice ist der Service, dem Sie basierend auf den von Ihnen zugewiesenen Rollen die Berechtigung für den Zugriff durch den Quellenservice erteilen. Ein Quellenservice kann sich in demselben Konto, in dem die Autorisierung erstellt wird, oder in einem anderen Konto befinden. Der Zielservice befindet sich immer in dem Konto, in dem die Autorisierung erstellt wird. Sie können anzeigen, ob sich der Quellenservice im aktuellen Konto oder einem anderen Konto befindet, indem Sie die Spalte 'Quellenkonto' für die jeweilige Autorisierung auf der Seite Berechtigungen in der IBM Cloud®-Konsole anzeigen.

Genehmigung von abhängigen Dienstleistungen

In einigen Fällen können Sie zusätzlich zum Quellenservice auch abhängige Services autorisieren. Der Quellenservice, für den der Zugriff auf den Zielservice ermöglicht wird, ist von einem anderen Service abhängig. Dem abhängigen Service muss ebenfalls die entsprechende Zugriffsberechtigung zugewiesen werden, um den Workflow zu vervollständigen. Das folgende Diagramm veranschaulicht den Prozess der Zugriffsdelegierung zwischen Quell-, Ziel- und abhängigen Diensten:

S2S ermächtigungen mit abhängigen Leistungen.
Wie S2S Berechtigungen mit abhängigen Leistungen funktionieren

Weitere Informationen zu Rollen finden Sie unter Rollen für den Dienstzugang.

Das folgende Beispiel erklärt, wie die Beziehung zwischen den Quell-, Ziel- und abhängigen Diensten funktioniert. Nehmen wir an, Sie haben einen IBM Watson® Dienst, der auf eine Instanz von IBM Cloud Object Storage angewiesen ist, um Daten zu speichern. Wenn Sie eine Autorisierung zwischen dem IBM Watson-Service und dem IBM® Key Protect-Service aktivieren, ist möglicherweise die Object Storage-Instanz erforderlich, um auf einen Schlüssel in der Key Protect-Instanz des Benutzers zuzugreifen. D. h., die Autorisierung ist zwar zwischen dem IBM Watson-Service und dem Key Protect-Service eingerichtet, dem Object Storage-Service wird als abhängigem Service des IBM Watson-Service jedoch ebenfalls Zugriff erteilt. Indem Sie die Option zur Aktivierung von Autorisierungen für abhängige Services auswählen, müssen Sie keine zusätzlichen Schritte ausführen, da die Richtlinien für die abhängigen Services automatisch erstellt werden.

Die abhängigen Services des Quellenservice befinden sich möglicherweise im Konto des Quellenservice, d. h., sie werden für Sie in Ihrem Konto nicht angezeigt. Alle Zugriffsrichtlinien, die vom Quellenservice für die entsprechenden abhängigen Servcies erstellt werden, werden jedoch stets für Sie angezeigt. Informationen zu den von einem Benutzer erstellten Autorisierungen oder einem erstellten Quellenservice können Sie der Typspalte für die betreffende Autorisierung auf der Autorisierungsseite entnehmen.

Autorisierung in der Konsole erstellen

Sie benötigen eine Zugriffsberechtigung für den Zielservice, um eine Autorisierung zwischen Services zu erstellen. Sie können eine Berechtigung nur für diejenige Zugriffsebene erteilen, über die Sie selbst als Benutzer des Zielservice verfügen. Wenn Sie beispielsweise für den Zielservice über die Zugriffsberechtigung eines Anzeigeberechtigten verfügen, können Sie auch nur die Rolle eines Anzeigeberechtigten für die Autorisierung zuweisen.

  1. Klicken Sie in der IBM Cloud-Konsole auf Verwalten > Zugriff (IAM) und wählen Sie Autorisierungen aus.

  2. Klicken Sie auf Erstellen.

  3. Wählen Sie ein Quellenkonto aus.

    • Wenn die Quelle, die Zugriff auf das Ziel benötigt, diesem Konto angehört, wählen Sie Dieses Konto.
    • Wenn die Quelle, die Zugriff auf das Ziel benötigt, einem anderen Konto angehört, wählen Sie Anderes Konto. Geben Sie anschließend die Konto-ID des Quellenkontos ein.
  4. Wählen Sie den Dienst oder die Dienste aus, auf die Sie zugreifen möchten.

    • Sie können einen einzelnen Dienst auswählen und angeben, ob die Quelle alle Ressourcen, nur die Instanzen einer bestimmten Ressourcengruppe oder nur eine bestimmte Instanz des Kontos enthalten soll.
    • Neu Sie können auch Alle Identity and Access-fähigen Dienste auswählen und eine Ressourcengruppen-ID auswählen oder eingeben.

    Neu Durch die Eingabe einer Ressourcengruppe als Quelle erhalten die Dienstinstanzen in einer Ressourcengruppe Zugriff auf die Zielressource in Ihrem Konto. Sie können diese Zugriffsebene einrichten, wenn Sie keinen direkten Zugriff auf eine Ressource gewähren wollen.

  5. Wählen Sie ein Ziel.

  6. Geben Sie an, ob das Ziel alle Ressourcen oder nur bestimmte Ressourcen umfassen soll. Wenn Sie bestimmte Ressourcen als Ziel ausgewählt haben, können Sie Attribute hinzufügen, um den Zugriff weiter einzugrenzen. Die Art der Attribute hängt von dem von Ihnen ausgewählten Zieldienst ab.

  7. (Optional) Aktivieren Sie das Kontrollkästchen Berechtigung zur Delegierung durch Quell- und abhängige Dienste aktivieren, damit der Quelldienst seinen Zugriff an alle abhängigen Dienste delegieren kann. Diese Option wird nur angezeigt, wenn der Quellenservice über abhängige Services verfügt. Wenn Sie diese Option auswählen, werden vom Quellenservice automatisch Richtlinien für die abhängigen Services erstellt.

  8. Wählen Sie eine Rolle aus, um dem Quellenservice die Zugriffsberechtigung zuzuweisen, der auf den Zielservice zugreift.

  9. Klicken Sie auf Autorisieren.

Wenn Sie eine Berechtigung zwischen einem Dienst in einem anderen Konto und einem Zieldienst in Ihrem aktuellen Konto erstellen, benötigen Sie nur Zugriff auf die Zielressource. Für das Quellenkonto ist nur die Kontonummer erforderlich.

Autorisierung über die Befehlszeilenschnittstelle (CLI) erstellen

Führen Sie den Befehl ibmcloud iam authorization-policy-create aus, um einen Quellenservice für den Zugriff auf einen Zielservice zu autorisieren.

Im folgenden Beispiel werden Pseudodaten für die Erstellung einer Richtlinie verwendet, mit der eine bestimmte Quellenserviceinstanz von IBM Cloud Object Storage autorisiert wird, auf eine bestimmte Zielserviceinstanz von IBM Key Protect zuzugreifen:

ibmcloud iam authorization-policy-create cloud-object-storage kms Reader --source-service-instance-id 123123 --target-service-instance-id 456456

Weitere Informationen zu allen Parametern, die für diesen Befehl verfügbar sind, finden Sie unter ibmcloud iam authorization-policy-create.

Autorisierung mit Terraform erstellen

Sie benötigen eine Zugriffsberechtigung für den Zielservice, um eine Autorisierung zwischen Services zu erstellen. Sie können eine Berechtigung nur für diejenige Zugriffsebene erteilen, über die Sie selbst als Benutzer des Zielservice verfügen. Wenn Sie beispielsweise für den Zielservice über die Zugriffsberechtigung eines Anzeigeberechtigten verfügen, können Sie auch nur die Rolle eines Anzeigeberechtigten für die Autorisierung zuweisen.

Bevor Sie eine Autorisierung mit Terraform erstellen können, müssen Sie folgende Schritte durchführen:

  • Installieren Sie die Terraform CLI und konfigurieren Sie das IBM Cloud Provider Plug-in für Terraform. Weitere Informationen finden Sie in der Anleitung zu den ersten Schritten mit Terraform auf IBM Cloud®. Das Plug-in abstrahiert die IBM Cloud APIs, die zur Erfüllung dieses Tasks verwendet werden.
  • Erstellen Sie eine Terraform-Konfigurationsdatei mit dem Namen main.tf. In dieser Datei definieren Sie die Ressourcen mit Hilfe der HashiCorp Configuration Language. Weitere Informationen finden Sie in der Terraform-Dokumentation.

Verwenden Sie die folgenden Schritte, um eine Autorisierung mit Terraform zu erstellen:

  1. Erstellen Sie eine Autorisierungsrichtlinie zwischen den Diensten, indem Sie das Argument ibm_iam_authorization_policy resource in Ihrer Datei main.tf verwenden.

    Das folgende Beispiel erstellt eine Berechtigung zwischen Diensten:

    resource "ibm_iam_authorization_policy" "policy" {
    source_service_name = "cloud-object-storage"
    target_service_name = "kms"
    roles               = ["Reader"]
    description         = "Authorization Policy"
    transaction_id     = "terraformAuthorizationPolicy"
    }
    

    Für die Ressource ibm_iam_authorization_policy sind der Quelldienst, der Zieldienst und die Rolle erforderlich. Dem Quelldienst wird Zugriff auf den Zieldienst gewährt, und die Rolle ist die Berechtigungsstufe, die den Zugriff erlaubt. Optional können Sie eine Beschreibung für die Autorisierung und eine Transaktions-ID hinzufügen.

    Weitere Beispiele finden Sie in der Terraform-Dokumentation für Autorisierungsressourcen.

  2. Nachdem Sie Ihre Konfigurationsdatei erstellt haben, initialisieren Sie die Terraform CLI. Weitere Informationen finden Sie unter Initialisierung von Arbeitsverzeichnissen.

    terraform init
    
  3. Bereitstellung der Ressourcen aus der Datei main.tf. Weitere Informationen finden Sie unter Bereitstellung der Infrastruktur mit Terraform.

    1. Führen Sie terraform plan aus, um einen Terraform-Ausführungsplan zu erstellen und eine Vorschau der vorgeschlagenen Aktionen zu erhalten.

      terraform plan
      
    2. Führen Sie terraform apply aus, um die im Plan definierten Ressourcen zu erstellen.

      terraform apply
      

Autorisierung mithilfe der API erstellen

Verwenden Sie die IAM-Richtlinienmanagement-API, um einen Quellenservice für den Zugriff auf einen Zielservice zu berechtigen. Das folgende API-Beispiel zeigt das Erstellen einer Richtlinienmethode, wobei type=authorization angegeben wurde.

Die unterstützten Attribute zum Erstellen einer Berechtigungsrichtlinie hängen davon ab, was der einzelne Service unterstützt. Weitere Informationen zu den unterstützten Attributen für die einzelnen Services finden Sie in der Dokumentation zu den verwendeten Services.

curl --request POST \
  --url https://iam.cloud.ibm.com/v1/policies \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "type": "authorization",
    "subjects": [
        {
            "attributes": [
                {
                    "name": "accountId",
                    "value": "<account-id>"
                },
                {
                    "name": "serviceName",
                    "value": "<service-name>"
                },
                {
                    "name": "serviceInstance",
                    "value": "<instance-id>"
                }
            ]
        }
    ],
    "roles": [
        {
            "role_id": "crn:v1:bluemix:public:iam::::serviceRole:Reader"
        }
    ],
    "resources": [
        {
            "attributes": [
                {
                    "name": "accountId",
                    "value": "<account-id>"
                },
                {
                    "name": "serviceName",
                    "value": "<service-name>"
                },
                {
                    "name": "serviceInstance",
                    "value": "<instance-id>"
                },
                {
                    "name": "resourceType",
                    "value": "<resource-type>"
                },
                {
                    "name": "resource",
                    "value": "<id>"
                }
            ]
        }
    ]
}'
SubjectAttribute accountSubjectAttribute = new SubjectAttribute.Builder()
      .name("accountId")
      .value(exampleAccountId)
      .build();

SubjectAttribute serviceNameSubjectAttribute = new SubjectAttribute.Builder()
      .name("serviceName")
      .value(exampleSourceServiceName)
      .build();

SubjectAttribute serviceInstanceSubjectAttribute = new SubjectAttribute.Builder()
      .name("serviceInstance")
      .value(exampleSourceServiceInstanceId)
      .build();

PolicySubject policySubjects = new PolicySubject.Builder()
      .addAttributes(accountSubjectAttribute)
      .addAttributes(serviceNameSubjectAttribute)
      .addAttributes(serviceInstanceSubjectAttribute)
      .build();

PolicyRole policyRoles = new PolicyRole.Builder()
      .roleId("crn:v1:bluemix:public:iam::::serviceRole:Reader")
      .build();

ResourceAttribute accountIdResourceAttribute = new ResourceAttribute.Builder()
      .name("accountId")
      .value(exampleAccountId)
      .operator("stringEquals")
      .build();

ResourceAttribute serviceNameResourceAttribute = new ResourceAttribute.Builder()
      .name("serviceName")
      .value(exampleTargetServiceName)
      .operator("stringEquals")
      .build();

ResourceAttribute serviceInstanceResourceAttribute = new ResourceAttribute.Builder()
      .name("serviceInstance")
      .value(exampleTargetInstanceId)
      .operator("stringEquals")
      .build();

ResourceAttribute resourceTypeResourceAttribute = new ResourceAttribute.Builder()
      .name("resourceType")
      .value(exampleResourceType)
      .operator("stringEquals")
      .build();

ResourceAttribute resourceResourceAttribute = new ResourceAttribute.Builder()
      .name("resource")
      .value(exampleResourceId)
      .operator("stringEquals")
      .build();

PolicyResource policyResources = new PolicyResource.Builder()
      .addAttributes(accountIdResourceAttribute)
      .addAttributes(serviceNameResourceAttribute)
      .addAttributes(serviceInstanceResourceAttribute)
      .addAttributes(resourceTypeResourceAttribute)
      .addAttributes(resourceResourceAttribute)
      .build();

CreatePolicyOptions options = new CreatePolicyOptions.Builder()
      .type("authorization")
      .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: 'accountId',
        value: exampleAccounId,
      },
      {
        name: 'serviceName',
        value: exampleSourceServiceName,
      },
      {
        name: 'serviceInstance',
        value: exampleSourceServiceInstaceId,
      },
    ],
  },
];
const policyRoles = [
  {
    role_id: 'crn:v1:bluemix:public:iam::::serviceRole:Reader',
  },
];
const accountIdResourceAttribute = {
  name: 'accountId',
  value: exampleAccountId,
  operator: 'stringEquals',
};
const serviceNameResourceAttribute = {
  name: 'serviceName',
  value: exampleTargetServiceName,
  operator: 'stringEquals',
};
const serviceInstanceResourceAttribute = {
  name: 'serviceInstance',
  value: exampleTargetServiceInstanceId,
  operator: 'stringEquals',
};
const resourceTypeResourceAttribute = {
  name: 'resourceType',
  value: exampleResourceType,
  operator: 'stringEquals',
};
const resourceResourceAttribute = {
  name: 'resource',
  value: exampleResourceId,
  operator: 'stringEquals',
};

const policyResources = [
  {
    attributes: [
      accountIdResourceAttribute,
      serviceNameResourceAttribute,
      serviceInstanceResourceAttribute,
      resourceTypeResourceAttribute,
      resourceResourceAttribute,
    ],
  },
];
const params = {
  type: 'authorization',
  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='accountId', value=example_account_id),
                SubjectAttribute(name='serviceName', value=example_source_service_name),
                SubjectAttribute(name='serviceInstance', value=example_source_service_instance_id)])
policy_roles = PolicyRole(
    role_id='crn:v1:bluemix:public:iam::::serviceRole:Reader')
account_id_resource_attribute = ResourceAttribute(
    name='accountId', value=example_account_id)
service_name_resource_attribute = ResourceAttribute(
    name='serviceName', value=example_target_service_name)
service_instance_resource_attribute = ResourceAttribute(
    name='serviceInstance', value=example_target_service_instance_id)
resource_type_resource_attribute = ResourceAttribute(
    name='resourceType', value=example_resource_type)
resource_resource_attribute = ResourceAttribute(
    name='resource', value=example_resource_id)
policy_resources = PolicyResource(
    attributes=[account_id_resource_attribute,
                service_name_resource_attribute,
                service_instance_resource_attribute,
                resource_type_resource_attribute,
                resource_resource_attribute])

policy = iam_policy_management_service.create_policy(
    type='authorization',
    subjects=[policy_subjects],
    roles=[policy_roles],
    resources=[policy_resources]
).get_result()

print(json.dumps(policy, indent=2))
accountSubjectAttribute := &iampolicymanagementv1.SubjectAttribute{
    Name:  core.StringPtr("accountId"),
    Value: &exampleAccountID,
}
serviceNameSubjectAttribute := &iampolicymanagementv1.SubjectAttribute{
    Name:  core.StringPtr("serviceName"),
    Value: &exampleSourceServiceName,
}
serviceInstanceSubjectAttribute := &iampolicymanagementv1.SubjectAttribute{
    Name:  core.StringPtr("serviceInstance"),
    Value: &exampleSourceServiceInstanceId,
}
policySubjects := &iampolicymanagementv1.PolicySubject{
    Attributes: []iampolicymanagementv1.SubjectAttribute{*accountSubjectAttribute,
        *serviceNameSubjectAttribute, *serviceInstanceSubjectAttribute},
}
policyRoles := &iampolicymanagementv1.PolicyRole{
    RoleID: core.StringPtr("crn:v1:bluemix:public:iam::::serviceRole:Reader"),
}
accountIDResourceAttribute := &iampolicymanagementv1.ResourceAttribute{
    Name:     core.StringPtr("accountId"),
    Value:    core.StringPtr(exampleAccountID),
    Operator: core.StringPtr("stringEquals"),
}
serviceNameResourceAttribute := &iampolicymanagementv1.ResourceAttribute{
    Name:     core.StringPtr("serviceName"),
    Value:    core.StringPtr(exampleTargetServiceName),
    Operator: core.StringPtr("stringEquals"),
}
serviceInstanceResourceAttribute := &iampolicymanagementv1.ResourceAttribute{
    Name:     core.StringPtr("serviceInstance"),
    Value:    core.StringPtr(exampleTargetServiceInstanceId),
    Operator: core.StringPtr("stringEquals"),
}
resourceTypeResourceAttribute := &iampolicymanagementv1.ResourceAttribute{
    Name:     core.StringPtr("resourceType"),
    Value:    core.StringPtr(exampleResourceType),
    Operator: core.StringPtr("stringEquals"),
}
resourceResourceAttribute := &iampolicymanagementv1.ResourceAttribute{
    Name:     core.StringPtr("resource"),
    Value:    core.StringPtr(exampleResourceId),
    Operator: core.StringPtr("stringEquals"),
}
policyResources := &iampolicymanagementv1.PolicyResource{
    Attributes: []iampolicymanagementv1.ResourceAttribute{
        *accountIDResourceAttribute, *serviceNameResourceAttribute,
        *serviceInstanceResourceAttribute, *resourceTypeResourceAttribute,
        *resourceResourceAttribute},
}

options := iamPolicyManagementService.NewCreatePolicyOptions(
    "authorization",
    []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))

Nicht alle Services unterstützen Richtlinien auf der Ressourcentypebene (resourceType) und auf den Ebenen der einzelnen Ressourcen (resource). Beispiele für Services, die diese Attribute unterstützten, sind IBM Cloud Object Storage und IBM Key Protect, wobei Buckets und Schlüssel die Ressourcentypen sind und die ID zur Angabe der spezifischen Ressource dient.

Erstellen von Berechtigungen, die resource-group als resourceType

Um eine Autorisierung zu erstellen, die resource-group entweder als Quelle oder als Ziel verwendet, verwenden Sie die IAM Policy Management API.

resource-group als Quelle

Siehe das folgende API-Beispiel zum Erstellen einer Richtlinienmethode mit der als Quelle angegebenen resource-group.

{
 "type": "authorization",
    "subjects": [
        {
            "attributes": [
                {
                    "name": "resourceGroupId",
                    "value": "<rgId>"
                },
                {
                    "name": "accountId",
                    "value": "<sourceAccountId>"
                }
            ]
        }
    ],
    "roles": [
        {
            "role_id": "crn:v1:bluemix:public:iam::::role:Viewer"
        }
    ],
    "resources": [
        {
            "attributes": [
                {
                    "name": "accountId",
                    "value": "<targetAccountId>"
                },
                {
                    "name": "serviceName",
                    "value": "<targetService>"
                },
                {
                    "name": "serviceInstance",
                    "value": "<targetServiceInstance>"
                }
            ]
        }
    ]
}

resource-group als Ziel

Siehe das folgende API-Beispiel für das Erstellen einer Richtlinienmethode mit der als Ziel angegebenen resource-group.

{
 "type": "authorization",
    "subjects": [
        {
            "attributes": [
                {
                    "name": "accountId",
                    "value": "<sourceAccountId>"
                },
                {
                    "name": "serviceName",
                    "value": "<sourceService>"
                },
                {
                    "name": "serviceInstance",
                    "value": "<sourceServiceInstance>"
                }
            ]
        }
    ],
    "roles": [
        {
            "role_id": "crn:v1:bluemix:public:iam::::role:Viewer"
        }
    ],
    "resources": [
        {
            "attributes": [
                {
                    "name": "accountId",
                    "value": "<targetAccountId>"
                },
                {
                    "name": "resourceType",
                    "value": "resource-group"
                }
            ]
        }
    ]
}

Autorisierung in der Konsole entfernen

Sie können Autorisierungen zwischen Services im Konto entfernen, wenn Ihnen die Administratorrolle für den Zielservice zugewiesen ist. Wenn Sie eine Zugriffsrichtlinie entfernen, die vom Quellenservice für zugehörige abhängige Services erstellt wurde, kann der Quellenservice weder den Workflow abschließen noch auf den Zielservice zugreifen.

  1. Klicken Sie in der IBM Cloud-Konsole auf Verwalten > Zugriff (IAM) und wählen Sie Autorisierungen aus.
  2. Ermitteln Sie die Zeile für die Autorisierung, die aus dem Konto entfernt werden soll.
  3. Klicken Sie auf das Symbol Aktionen Aktionen-Symbol > Entfernen.
  4. Wählen Sie Entfernen aus.

Wenn der Quellenservice aus dem Konto entfernt wird, werden alle Richtlinien, die von diesem Service für zugehörige abhängige Services erstellt werden, automatisch gelöscht. Ebenso werden, wenn der abhängige Service aus dem Konto entfernt wird, alle Zugriffsrichtlinien, die an diesen Service delegiert wurden, ebenfalls entfernt.

Autorisierung über die Befehlszeilenschnittstelle (CLI) entfernen

Sie können Autorisierungen zwischen Services im Konto entfernen, wenn Ihnen die Administratorrolle für den Zielservice zugewiesen ist. Wenn Sie eine Zugriffsrichtlinie entfernen, die vom Quellenservice für zugehörige abhängige Services erstellt wurde, kann der Quellenservice weder den Workflow abschließen noch auf den Zielservice zugreifen.

Führen Sie den Befehl ibmcloud iam authorization-policy-create aus, um einen Quellenservice für den Zugriff auf einen Zielservice zu berechtigen.

Im folgenden Beispiel wird eine Autorisierungsrichtlinie gelöscht:

ibmcloud iam authorization-policy-delete 12345678-abcd-1a2b-a1b2-1234567890ab

Weitere Informationen zu allen Parametern, die für diesen Befehl verfügbar sind, finden Sie im Abschnitt zu ibmcloud iam authorization-policy-delete.

Wenn der Quellenservice aus dem Konto entfernt wird, werden alle Richtlinien, die von diesem Service für zugehörige abhängige Services erstellt werden, automatisch gelöscht. Ebenso werden, wenn der abhängige Service aus dem Konto entfernt wird, alle Zugriffsrichtlinien, die an diesen Service delegiert wurden, ebenfalls entfernt.

Autorisierung über die Anwendungsprogrammierschnittstelle (API) entfernen

Sie können Autorisierungen zwischen Services im Konto entfernen, wenn Ihnen die Administratorrolle für den Zielservice zugewiesen ist. Wenn Sie eine Zugriffsrichtlinie entfernen, die vom Quellenservice für zugehörige abhängige Services erstellt wurde, kann der Quellenservice weder den Workflow abschließen noch auf den Zielservice zugreifen.

Sie können eine Autorisierungsrichtlinie über die IAM-Richtlinienverwaltungs-API löschen, wie im folgenden Beispiel dargestellt:

curl -X DELETE 'https://iam.cloud.ibm.com/v1/policies/$POLICY_ID' \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json'
DeletePolicyOptions options = new DeletePolicyOptions.Builder()
        .policyId(examplePolicyId)
        .build();

service.deletePolicy(options).execute();
const params = {
  policyId: examplePolicyId,
};

iamPolicyManagementService.deletePolicy(params)
  .then(res => {
    console.log(JSON.stringify(res, null, 2));
  })
  .catch(err => {
    console.warn(err)
  });
response = iam_policy_management_service.delete_policy(
  policy_id=example_policy_id
).get_result()

print(json.dumps(response, indent=2))
options := iamPolicyManagementService.NewDeletePolicyOptions(
  examplePolicyID,
)

response, err := iamPolicyManagementService.DeletePolicy(options)
if err != nil {
  panic(err)
}

Wenn der Quellenservice aus dem Konto entfernt wird, werden alle Richtlinien, die von diesem Service für zugehörige abhängige Services erstellt werden, automatisch gelöscht. Ebenso werden, wenn der abhängige Service aus dem Konto entfernt wird, alle Zugriffsrichtlinien, die an diesen Service delegiert wurden, ebenfalls entfernt.

Entfernen einer Autorisierung mit Hilfe von Terraform

Wenn Sie eine Autorisierung mit Hilfe von Terraform entfernen möchten, müssen Sie das Argument aus der Datei main.tf löschen. Nachdem Sie das Argument gelöscht haben, stellen Sie Ihre Datei mit den folgenden Schritten bereit:

  1. Führen Sie terraform plan aus, um einen Terraform-Ausführungsplan zu erstellen und eine Vorschau der vorgeschlagenen Aktionen zu erhalten.

    terraform plan
    
  2. Führen Sie terraform apply aus, um die im Plan definierten Ressourcen zu erstellen.

    terraform apply