IAM-Zugriff für IBM Cloud Direct Link verwalten

IBM Cloud® Identity and Access Management (IAM) steuert den Zugang zu Direct Link Gateways für Benutzer in Ihrem Konto. Jedem Benutzer, der auf den Direct Link-Service in Ihrem Konto zugreift, muss eine Zugriffsrichtlinie mit einer IAM-Rolle zugewiesen werden. Sehen Sie sich die folgenden Rollen, Aktionen und weitere Informationen an, um zu ermitteln, wie Sie die Zugriffsrechte für Direct Link am besten zuweisen können.

IBM Cloud® Direct Link ermöglicht die Konnektivität zwischen lokalen Ressourcen des Kunden und IBM Cloud-Ressourcen, die in klassischen Infrastrukturen oder VPC-Infrastrukturen (Virtual Private Cloud) gehostet werden.

Die Zugriffsrichtlinie, die Sie Benutzern in Ihrem Konto zuordnen, bestimmt, welche Aktionen ein Benutzer im Kontext des von Ihnen ausgewählten Service oder der betreffenden Instanz ausführen kann. Der Direktlink passt die zulässigen Aktionen an und definiert sie als Vorgänge, die für den Dienst ausgeführt werden dürfen. Jede Aktion wird einer IAM-Plattform- oder -Servicerolle zugeordnet, die Sie einem Benutzer zuweisen können.

Wenn eine bestimmte Rolle und die zugehörigen Aktionen nicht für den Anwendungsfall geeignet sind, den Sie bearbeiten möchten, können Sie eine angepasste Rolle erstellen und die Aktionen auswählen, die einbezogen werden sollen.

IAM-Zugriffsrichtlinien ermöglichen es, den Zugriff auf verschiedenen Ebenen zu erteilen. Einige Optionen sind

  • Zugriff auf die Instanz des Direct Link-Service in Ihrem Konto
  • Zugriff auf eine einzelne Serviceinstanz in Ihrem Konto
  • Zugriff auf eine bestimmte Ressource in einer Instanz

Sehen Sie sich die folgende Tabelle an, in der aufgeführt ist, welche Arten von Aufgaben die einzelnen Rollen bei der Arbeit mit dem Dienst „ Direct Link “ zulassen. Mit Plattformverwaltungsrollen können Benutzer Aufgaben an Dienstressourcen auf Plattformebene ausführen, beispielsweise Benutzern Zugriff auf den Dienst zuweisen sowie Instanzen erstellen oder löschen.

Direct Link verfügt nicht über Service-Zugriffsrollen, die Benutzern den Zugriff auf Direct Link und die Möglichkeit zum Aufrufen der Direct Link API ermöglichen. Informationen zu den genauen Aktionen, die den einzelnen Rollen zugeordnet sind, finden Sie unter Direct Link Connect und Direct Link Dedicated.

IAM-Plattform - Zugriff auf Benutzerrolle und Aktionen
Plattformrolle Beschreibung der Aktionen Beispielaktionen
Administrator Ermöglicht es dem Benutzer, Direct Link-IAM-Zugriffsrichtlinien anderen Benutzern zuzuordnen. Gateway erstellen
Gateway löschen
Gateway bearbeiten
Fügen Sie eine virtuelle Verbindung zu einem Gateway hinzu *
Entfernen Sie eine virtuelle Verbindung von einem Gateway *
Bearbeiten Sie eine virtuelle Verbindung (nur API)
Aktualisieren Sie Benutzerzugriffsrichtlinien für den Service
Bearbeiter Führt alle Aktionen aus, einschließlich der Verwaltung von Gateways und virtuellen Verbindungen. Gateway erstellen
Gateway löschen
Gateway bearbeiten
Eine virtuelle Verbindung zu einem Gateway hinzufügen *
Eine virtuelle Verbindung aus einem Gateway entfernen*
Eine virtuelle Verbindung bearbeiten (nur API)
Anzeigeberechtigter/Operator Führt Aktionen aus, durch die der Zustand der Ressourcen nicht geändert wird. Gateways auflisten
Gateways abrufen
Virtuelle Verbindungen eines Gateways auflisten
Virtuelle Verbindungen eines Gateways anzeigen
Informationen zum Gateway abrufen (Benachrichtigung über den Abschluss der Autorisierung)
Eingehende Verbindungsanfragen anzeigen*

& ast; Zum Hinzufügen oder Entfernen von virtuellen Verbindungen zu VPCs oder zum Akzeptieren oder Zurückweisen einer Verbindungsanforderung muss der Benutzer auch über die Berechtigungen der Plattformzugriffsrolle 'Editor' oder 'Administrator' für die VPC verfügen. Weitere Informationen finden Sie unter VPC: Erste Schritte mit IAM.

Hinweise:

  • Alle Direct Link-Ressourcen sind in einer Ressourcengruppe vorhanden. Zum Erstellen einer „ Direct Link “-Ressource ist Editor-Zugriff auf die ausgewählte Ressourcengruppe erforderlich.
  • Informationen zum Zuweisen von Benutzerrollen in der Konsole finden Sie im Abschnitt Zugriff auf Ressourcen verwalten.

Zugriffsrechte für „ Direct Link “ in der Konsole zuweisen

Gängige Methoden zum Zuweisen von Zugriffen in der Konsole:

  • Zugriffsrichtlinien pro Benutzer. Sie können Zugriffsrichtlinien pro Benutzer über die Seite Verwalten > Zugriff (IAM) > Benutzer in der Konsole verwalten. Weitere Informationen zu den Schritten zum Zuordnen von IAM-Zugriff finden Sie unter Zugriff auf Ressourcen verwalten.
  • Zugriffsgruppen. Zugriffsgruppen werden verwendet, um das Zugriffsmanagement zu optimieren, indem Sie einer Gruppe einmal Zugriff erteilen. Anschließend können Sie Benutzer nach Bedarf zu der Gruppe hinzufügen oder aus der Gruppe entfernen, um ihren Zugriff zu steuern. Sie verwalten Zugriffsgruppen und deren Zugriff über die Seite Verwalten > Zugriff (IAM) > Zugriffsgruppen in der Konsole. Weitere Informationen finden Sie unter Zugriff auf eine Gruppe in der Konsole zuweisen.

Hinweise zur Autorisierung für kontoübergreifende virtuelle Verbindungen

Die folgende Tabelle enthält die Änderungen bei der Autorisierung kontoübergreifender virtueller Verbindungen.

Eine kontoübergreifende virtuelle Verbindung bedeutet, dass das Gateway in einem IBM Cloud-Konto vorhanden ist und eine virtuelle Verbindung in diesem Gateway eine Verbindung zu einer VPC in einem anderen IBM Cloud-Konto herstellt. Diese Konfiguration erfordert besondere Überlegungen hinsichtlich der Berechtigungen, da die Objekte (die direkte Verbindung und die VPC) sowie deren Ressourcengruppen nicht in beiden Konten vorhanden sind.

Berechtigungsänderungen für kontoübergreifende virtuelle Verbindungen
Zugehöriges Konto Funktionalität Erforderliche Berechtigung
Gateway-Konto Alle Funktionen, die in dieser Tabelle nicht aufgeführt sind. Keine Autorisierungsänderungen.
Gateway-Konto Erstellen und Löschen einer kontoübergreifenden virtuellen Verbindung. directlink.dedicated.edit oder directlink.connect.edit
Es ist keine VPC-Autorisierung erforderlich, weder beim Erstellen noch beim Löschen.
Netzkonto Anzeigen von schreibgeschützten Gateways und virtuellen Verbindungen. Service-Level directlink.dedicated.view oder directlink.connect.view
Netzkonto Akzeptieren und Ablehnen anstehender Verbindungen. Berechtigung auf Serviceebene directlink.dedicated.view oder directlink.connect.view
Aktualisierungsberechtigung für die verbundene VPC.
Netzkonto Löschen einer zugeordneten virtuellen Verbindung mit DELETE. Berechtigung auf Serviceebene directlink.dedicated.view oder directlink.connect.view
Aktualisierungsberechtigung für die verbundene VPC.

Zugriff auf „ Direct Link “ über die API zuweisen

Eine Schritt-für-Schritt-Anleitung zum Zuweisen, Entziehen und Überprüfen von Zugriffsrechten finden Sie unter „ Zugriff auf Ressourcen über die API zuweisen “ oder im API-Dokument „Richtlinie erstellen “. 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
Anzeigeberechtigter crn:v1:bluemix:public:directlink::::serviceRole:Viewer
Operator crn:v1:bluemix:public:directlink::::serviceRole:Operator
Bearbeiter crn:v1:bluemix:public:directlink::::serviceRole:Editor
Administrator crn:v1:bluemix:public:directlink::::serviceRole:Administrator
Leseberechtigter crn:v1:bluemix:public:directlink::::serviceRole:Reader
Schreibberechtigter crn:v1:bluemix:public:directlink::::serviceRole:Writer
Manager crn:v1:bluemix:public:directlink::::serviceRole:Manager

Verwenden Sie „ directlink “ als Dienstnamen und überprüfen Sie anhand der Tabelle mit den Rollen-ID-Werten, ob Sie den richtigen Wert für die CRN verwenden.

Die folgende Richtlinie weist allen serviceName=directlink-Ressourcen im Konto die Rolle eines Schreibberechtigten zu.

curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H 'Authorization: Bearer $TOKEN' -H 'Content-Type: application/json' -d '{
  "type": "access",
  "description": "Writer role for Direct Link",
  "subjects": [
   {
    "attributes": [{
        "name": "iam_id",
        "value": "IBMid-123453user"
    }]
  }],
  "roles": [{
    "roles_id": "crn:v1:bluemix:public:directlink::::serviceRole:Writer"
   }],
  "resources": [{
    "attributes": [
    {
        "name": "accountId",
        "value": "1234567890987654321"
    },
    {
        "name": "serviceName",
        "value": "directlink"
    }]
}]
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:directlink::::serviceRole:Writer")
      .build();
ResourceAttribute accountIdResourceAttribute = new ResourceAttribute.Builder()
      .name("accountId")
      .value("ACCOUNT_ID")
      .operator("stringEquals")
      .build();
ResourceAttribute serviceNameResourceAttribute = new ResourceAttribute.Builder()
      .name("serviceName")
      .value("directlink")
      .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);
policy_subjects = PolicySubject(
  attributes=[SubjectAttribute(name='iam_id', value='IBMid-123453user')])
policy_roles = PolicyRole(
  role_id='crn:v1:bluemix:public:directlink::::serviceRole:Writer')
account_id_resource_attribute = ResourceAttribute(
  name='accountId', value='ACCOUNT_ID')
service_name_resource_attribute = ResourceAttribute(
  name='serviceName', value='directlink')
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:directlink::::serviceRole:Writer"),
}
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("directlink"),
  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))
const policySubjects = [
  {
    attributes: [
      {
        name: 'iam_id',
        value: 'IBMid-123453user',
      },
    ],
  },
];
const policyRoles = [
  {
    role_id: 'crn:v1:bluemix:public:directlink::::serviceRole:Writer',
  },
];
const accountIdResourceAttribute = {
  name: 'accountId',
  value: 'ACCOUNT_ID',
  operator: 'stringEquals',
};
const serviceNameResourceAttribute = {
  name: 'serviceName',
  value: 'directlink',
  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)
  });

Curl-Beispiel 2

Die folgende Richtlinie weist allen serviceName=directlink-Ressourcen des Typs dedicated im Konto die Rolle 'Schreibberechtigter' zu.

curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H 'Authorization: Bearer $TOKEN' -H 'Content-Type: application/json' -d '{
  "type": "access",
  "description": "Writer role for Direct Link Dedicated",
  "subjects": [
  {
    "attributes": [{
        "name": "iam_id",
        "value": "IBMid-123453user"
  }]
}],
"roles": [{
    "roles_id": "crn:v1:bluemix:public:directlink::::serviceRole:Writer"
}],
"resources": [{
    "attributes": [
    {
        "name": "accountId",
        "value": "1234567890987654321"
    },
    {
        "name": "serviceName",
        "value": "directlink"
    },
    {
        "name": "dedicatedId",
        "value": "*"
    }]
}]

Zugriff auf „ directlink “ mithilfe von Terraform zuweisen

Das folgende Beispiel zeigt, wie man die Rolle „ Editor “ für „ directlink “ zuweist:

Verwenden Sie directlink als Servicenamen.

resource "ibm_iam_user_policy" "policy" {
  ibm_id = "test@example.com"
  roles  = ["Editor"]
  resources {
    service = "directlink"
  }
}

Weitere Informationen finden Sie unter ibm_iam_user_policy.