IAM-Engine für Berechtigungsnachweise konfigurieren
Sie können IAM-Berechtigungsnachweise für Ihre IBM Cloud® Secrets Manager-Serviceinstanz einrichten, indem Sie die IAM-Engine für Berechtigungsnachweise konfigurieren.
In Secrets Manager dient die IAM-Berechtigungsnachweisengine als Back-End für den Typ des geheimen Schlüssels iam_credentials. Bevor Sie IAM-Berechtigungsnachweise erstellen können, müssen Sie die IAM-Berechtigungsnachweise-Engine
für Ihre Serviceinstanz konfigurieren. Sie können Ihre Instanz aktivieren, indem Sie eine IAM-Dienstautorisierung erstellen oder einen API-Schlüssel eingeben, der mit einer Dienst-ID in Ihrem IBM Cloud-Konto verbunden ist.
Bei Verwendung eines API-Schlüssels für die Motorkonfiguration ist das generierte Zugriffstoken 60 Minuten lang gültig und funktioniert auch dann noch, wenn der API-Schlüssel aus IAM gelöscht wird. Dies kann geändert werden, indem der Tokenverfall in den IAM-Einstellungen geändert wird. Weitere Informationen. Beachten Sie, dass beim Löschen der Entität, die sich auf den API-Schlüssel bezieht, das Token sofort ungültig gemacht wird.
Wenn Sie die IAM-Dienstautorisierung für die Engine-Konfiguration verwenden, können Sie IAM-Anmeldungsgeheimnisse im selben IBM Cloud-Konto wie die Secrets Manager-Instanz sowie von anderen Konten aus erstellen und verwalten. Die Konfiguration des API-Schlüssels funktioniert nur mit dem Konto, zu dem die Instanz Secrets Manager gehört.
Vorbereitende Schritte
Um die IAM-Credentials-Engine zu konfigurieren, stellen Sie sicher, dass Ihnen die Manager-Dienstrolle auf der Secrets Manager-Instanz zugewiesen ist.
Wenn Sie die IAM-Credentials-Engine mit einem API-Schlüssel konfigurieren, benötigen Sie einen Service-ID-API-Schlüssel mit dem folgenden Zugriff:
- Bearbeiter-Plattformrolle für den IAM-Zugriffsgruppenservice.
- Operator-Plattformrolle für den IAM-Identitätsservice.
- Servicerolle Service-ID-Ersteller für IAM Identity Service. Die Servicerolle Service-ID-Ersteller ist nur erforderlich, wenn Sie die Erstellung von Service-IDs in Ihren IAM-Einstellungen inaktivieren.
Wenn Sie die IAM-Anmeldeinformations-Engine mit IAM-Dienstautorisierung konfigurieren, fügt Secrets Manager die folgenden zwei Autorisierungsrichtlinien in Ihrem Namen hinzu.
- Groups Service Member Manage platform role auf dem IAM Access Groups Service Service.
- Operator Plattformrolle für IAM Identity Service Dienst.
- Servicerolle Service-ID-Ersteller für IAM Identity Service. Die Servicerolle Service-ID-Ersteller ist nur erforderlich, wenn Sie die Erstellung von Service-IDs in Ihren IAM-Einstellungen inaktivieren.
Wenn das Konto, in dem Sie IAM-Anmeldeinformationen generieren möchten, den Zugriff von bestimmten IP-Adressen erlaubt, müssen Sie auch die IP-Adresseinstellungen im Konto aktualisieren, um eingehende Anfragen von Secrets Manager zuzulassen. Weitere Informationen finden Sie unter Zugriff mit kontextbasierten Einschränkungen verwalten.
IAM-Engine für Berechtigungsnachweise in der Benutzerschnittstelle einrichten
IAM-Dienstautorisierung verwenden
Führen Sie die folgenden Schritte aus, um die IAM-Credentials-Engine mithilfe der IAM-Dienstautorisierung zu konfigurieren.
So verwalten Sie IAM-Anmeldeinformationen über dasselbe IBM Cloud-Konto wie Ihre Secrets Manager-Instanz:
- Klicken Sie auf der Seite Engines für geheime Schlüssel auf die Registerkarte IAM-Berechtigungsnachweise.
- Klicken Sie auf Autorisieren.
- Klicken Sie auf Konfigurieren.
Um IAM-Zugangsdaten von einem anderen IBM Cloud-Konto aus zu verwalten, erstellen Sie die IAM-Serviceberechtigungen manuell.
Für die Berechtigungsrichtlinie IAM Identity Service service:
- Gehen Sie in dem Konto, in dem Sie die IAM-Anmeldeinformationen verwalten möchten, zu Verwalten > Zugriff (IAM).
- Wählen Sie Zulassungen aus dem Menü im linken Fensterbereich.
- Klicken Sie auf Erstellen.
- Wählen Sie unter Quelle Spezifisches Konto und geben Sie die Konto-ID an, zu der die Instanz Secrets Manager gehört.
- Dienst: Secrets Manager.
- Ressourcen: Spezifische Ressourcen > Service-Instanz und geben Sie die Service-Instanz-ID für Ihre Secrets Manager-Instanz an.
- Wählen Sie unter Ziel
- Dienst: IAM Identity Service
- Ressourcen: Alle
- Rollen: Operator
Für die Berechtigungsrichtlinie IAM Access Groups Service Service:
- Gehen Sie in dem Konto, in dem Sie die IAM-Anmeldeinformationen verwalten möchten, zu Verwalten > Zugriff (IAM).
- Wählen Sie Zulassungen aus dem Menü im linken Fensterbereich.
- Klicken Sie auf Erstellen.
- Wählen Sie unter Quelle Spezifisches Konto und geben Sie die Konto-ID an, zu der die Instanz Secrets Manager gehört.
- Dienst: Secrets Manager.
- Ressourcen: Spezifische Ressourcen > Service-Instanz und geben Sie die Service-Instanz-ID für Ihre Secrets Manager-Instanz an.
- Wählen Sie unter Ziel
- Dienst: IAM-Zugangsgruppen-Dienst
- Ressourcen: Alle
- Rollen: Gruppen Service-Mitglied Verwalten
API-Schlüssel verwenden
Führen Sie die folgenden Schritte aus, um die IAM-Credentials-Engine mithilfe des API-Schlüssels einer Service-ID zu konfigurieren.
- Klicken Sie auf der Seite Engines für geheime Schlüssel auf die Registerkarte IAM-Berechtigungsnachweise.
- Klicken Sie auf IAM-Credentials-Engine mit API-Schlüssel konfigurieren.
- Geben Sie einen API-Schlüssel ein, der über Zugriff auf die Erstellung und Verwaltung anderer API-Schlüssel in Ihrem Konto verfügt.
- Klicken Sie auf Konfigurieren.
IAM-Engine für Berechtigungsnachweise über die Befehlszeilenschnittstelle einrichten
IAM-Dienstautorisierung verwenden
Führen Sie die folgenden Schritte aus, um die IAM-Credentials-Engine mithilfe einer IAM-Dienstberechtigung zu konfigurieren.
Um IAM-Anmeldeinformationen über dasselbe IBM Cloud-Konto wie Ihre Secrets Manager-Instanz zu verwalten, führen Sie die folgenden Befehle aus, um die erforderlichen IAM-Dienstautorisierungsrichtlinien hinzuzufügen:
ibmcloud iam authorization-policy-create secrets-manager iam-identity "Service ID Creator, Operator" --source-service-instance-id SOURCE_SERVICE_INSTANCE_GUID
ibmcloud iam authorization-policy-create secrets-manager iam-groups "Groups Service Member Manage" --source-service-account SOURCE_SERVICE_INSTANCE_GUID
- Ersetzen Sie SOURCE_SERVICE_INSTANCE_GUID durch die Secrets Manager Instanz-Service-ID. Wenn nicht angegeben, gilt die Genehmigung für alle Secrets Manager Instanzen
Um IAM-Anmeldeinformationen von einem anderen IBM Cloud-Konto zu verwalten: Geben Sie auch den Parameter ACCOUNT_GUID an.
- Melden Sie sich bei dem IBM Cloud-Konto mit den Dienst-IDs an, die Sie verwalten möchten.
- Führen Sie die folgenden Befehle aus, um die erforderlichen IAM-Dienstautorisierungsrichtlinien hinzuzufügen:
ibmcloud iam authorization-policy-create secrets-manager iam-identity "Service ID Creator, Operator" --source-service-instance-id SOURCE_SERVICE_INSTANCE_GUID --source-service-account ACCOUNT_GUID
ibmcloud iam authorization-policy-create secrets-manager iam-groups "Groups Service Member Manage" --source-service-account SOURCE_SERVICE_INSTANCE_GUID --source-service-instance-id ACCOUNT_GUID
- Ersetzen Sie SOURCE_SERVICE_INSTANCE_GUID durch die Secrets Manager Instanz-Service-ID. Wenn nicht angegeben, gilt die Genehmigung für alle Secrets Manager Instanzen
- Ersetzen Sie ACCOUNT_GUID durch die ID des IBM Cloud-Kontos, für das Sie IAM-Anmeldungsgeheimnisse erstellen möchten.
API-Schlüssel verwenden
Führen Sie die folgenden Schritte aus, um die IAM-Credentials-Engine unter Verwendung des API-Schlüssels einer Service-ID zu konfigurieren.
-
Melden Sie sich in einem Terminalfenster bei IBM Cloud über die IBM Cloud-Befehlszeilenschnittstelle an.
ibmcloud login -
Wählen Sie das Konto, die Region und die Ressourcengruppe aus, in der sich Ihre Secrets Manager-Serviceinstanz befindet.
-
Erstellen Sie eine Service-ID und legen Sie sie als Umgebungsvariable fest.
export SERVICE_ID=`ibmcloud iam service-id-create <service_ID_name> --description "<description>" --output json | jq -r ".id"`; echo $SERVICE_ID -
Verwalten Sie den Zugriff für die Service-ID.
Ordnen Sie die Service-ID zu, um andere Service-IDs zu erstellen und zu verwalten.
ibmcloud iam service-policy-create $SERVICE_ID --roles Operator --service-name "iam-identity"Ordnen Sie die Berechtigungen der Service-ID zu, um Zugriffsgruppen in Ihrem Konto anzuzeigen und zu aktualisieren.
ibmcloud iam access-group-policy-create $SERVICE_ID --roles Editor --service-name "iam-groups"Fügen Sie die Service-ID zu einer Zugriffsgruppe in Ihrem Konto hinzu.
ibmcloud iam access-group-service-id-add <access_group_name> $SERVICE_IDErstellen Sie einen IBM Cloud-API-Schlüssel für Ihre Service-ID.
export IBM_CLOUD_API_KEY=`ibmcloud iam service-api-key-create <API_key_name> $SERVICE_ID --description "<description>" --output json | jq -r ".apikey"` -
Verwenden Sie den API-Schlüssel, um die IAM Credentials Engine für Ihre Instanz zu konfigurieren.
Um eine Secrets-Engine über die IBM Cloud CLI zu konfigurieren, führen Sie den
ibmcloud secrets-manager configuration-createbefehl aus.ibmcloud secrets-manager configuration-create --configuration-prototype='{"config_type": "iam_credentials_configuration","name": "iam-configuration","api_key": "'$IBM_CLOUD_API_KEY'"}'Verwenden Sie eine Windows™-Eingabeaufforderung (
cmd.exe) oder PowerShell? Wenn bei der Übergabe des JSON-Inhalts über die Befehlszeile Fehler auftreten, müssen Sie möglicherweise die Zeichenfolgen an die Anforderungen an Escape-Zeichen für Anführungszeichen ändern, die für Ihr Betriebssystem spezifisch sind. Weitere Informationen finden Sie im Abschnitt zur Verwendung von Anführungszeichen mit Zeichenfolgen in der Befehlszeilenschnittstelle von IBM Cloud.
Konfigurieren der IAM-Anmeldeinformations-Engine mit der API
Wenn Sie Schritt-für-Schritt-Anweisungen zum Erstellen eines IBM Cloud-API-Schlüssels mit der richtigen Zugriffsebene benötigen, wechseln Sie zu den Schritten für die Benutzerschnittstelle (UI) oder Befehlszeilenschnittstelle (CLI) .
IAM-Dienstautorisierung verwenden
Das folgende Beispiel zeigt eine Abfrage, die Sie verwenden können, um die IAM-Credentials-Engine für Ihre Instanz zu konfigurieren, wenn Sie die IAM-Dienstautorisierung verwenden. Erfahren Sie mehr in IBM Cloud IAM's API Docs.
curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' -d '{
"type": "authorization",
"subjects": [
{
"attributes": [
{
"name": "accountId",
"value": "$SOURCE_ACCOUNT_ID"
},
{
"name": "serviceName",
"value": "secrets-manager"
},
{
"name": "serviceInstance",
"value": "$INSTANCE_GUID"
}
]
}
],
"roles":[
{
"role_id": "crn:v1:bluemix:public:iam-identity::::serviceRole:ServiceIdCreator"
},
{
"role_id": "crn:v1:bluemix:public:iam::::role:Operator"
}
],
"resources":[
{
"attributes": [
{
"name": "accountId",
"value": "$TARGET_ACCOUNT_ID"
},
{
"name": "serviceName",
"value": "iam-identity"
}
]
}
]
}'
curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' -d '{
"type": "authorization",
"subjects": [
{
"attributes": [
{
"name": "accountId",
"value": "$SOURCE_ACCOUNT_ID"
},
{
"name": "serviceName",
"value": "secrets-manager"
},
{
"name": "serviceInstance",
"value": "$INSTANCE_GUID"
}
]
}
],
"roles":[
{
"role_id": "crn:v1:bluemix:public:iam-groups::::serviceRole:MemberManage"
}
],
"resources":[
{
"attributes": [
{
"name":"$TARGET_ACCOUNT_ID",
"value": "791f5fb10986423e97aa8512f18b7e65"
},
{
"name": "serviceName",
"value": "iam-groups"
}
]
}
]
}'
Das Attribut serviceInstance attribut ist optional. Wird diese Angabe weggelassen, gilt die Berechtigung für alle Secrets Manager Instanzen. Die SOURCE_ACCOOUNT_ID und TARGET_ACCOUNT_ID sind erforderlich, unabhängig davon, ob die Berechtigung für das laufende Konto oder ein bestimmtes Konto erstellt wird.
API-Schlüssel verwenden
Das folgende Beispiel zeigt eine Abfrage, mit der Sie die IAM-Credentials-Engine für Ihre Instanz mithilfe eines API-Schlüssels konfigurieren können. Wenn Sie die API aufrufen, müssen Sie die API-Schlüsselvariablen und das IAM-Token durch die Werte ersetzen, die für Ihre Secrets Manager-Instanz spezifisch sind.
curl -X POST
--H "Authorization: Bearer {iam_token}" \
--H "Accept: application/json" \
--H "Content-Type: application/json" \
--d '{
"api_key": "{iam_apikey}", "config_type": "iam_credentials_configuration",
"name": "iam-configuration"
}' \
"https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/configurations"
Eine erfolgreiche Antwort gibt den ID-Wert für den geheimen Schlüssel zusammen mit anderen Metadaten zurück. Weitere Informationen über die erforderlichen und optionalen Anfrageparameter finden Sie unter Erstellen eines Geheimnisses.
Engine für IAM-Berechtigungsnachweise mit Terraform konfigurieren
IAM-Dienstautorisierung verwenden
Das folgende Beispiel zeigt eine Abfrage, die Sie verwenden können, um die IAM Credentials Engine für Ihre Secrets Manager Instanz zu konfigurieren, wenn Sie eine IAM Service Autorisierung verwenden.
resource "ibm_iam_authorization_policy" "sm_to_iam_identity" {
source_service_name = "secrets-manager"
source_service_account = local.source_account_id
source_resource_instance_id = local.instance_id
target_service_name = "iam-identity"
roles = ["Service ID creator", "Operator"]
}
resource "ibm_iam_authorization_policy" "sm_to_iam_groups" {
source_service_name = "secrets-manager"
source_service_account = local.source_account_id
source_resource_instance_id = local.instance_id
target_service_name = "iam-groups"
roles = ["Groups Service Member Manage"]
}
Das Attribut source_resource_instance_id attribut ist optional. Wird diese Angabe weggelassen, gilt die Berechtigung für alle Secrets Manager Instanzen. Das Attribut source_service_account attribut ist optional. Er kann weggelassen werden, wenn das Ursprungskonto mit dem Girokonto identisch ist.
API-Schlüssel verwenden
Wenn Sie Schritt-für-Schritt-Anweisungen zum Erstellen eines IBM Cloud-API-Schlüssels mit der richtigen Zugriffsebene benötigen, wechseln Sie zu den Schritten für die Benutzerschnittstelle (UI) oder Befehlszeilenschnittstelle (CLI) .
Das folgende Beispiel zeigt eine Konfiguration, mit der Sie die IAM-Credentials-Engine unter Verwendung des API-Schlüssels einer Dienst-ID konfigurieren können.
resource "ibm_sm_iam_credentials_configuration" "iam_credentials_configuration" {
instance_id = local.instance_id
region = local.region
name = "iam_credentials_config"
api_key = var.ibmcloud_api_key
}
Konfigurieren Sie die IAM Credentials Engine programmatisch mit der Secrets Manager IAM Engine. Siehe Terraform IBM Module für Konfigurationsbeispiele.
Abrufen des Konfigurationswerts einer IAM Credentials Engine in der UI
Sie können die Konfiguration einer Engine mit der Benutzerschnittstelle von Secrets Manager abrufen. Das Abrufen einer Konfiguration ist nur gültig, wenn die IAM-Anmeldeinformations-Engine mit einem API-Schlüssel konfiguriert wird.
- Klicken Sie in der Engine für geheime Schlüssel IAM-Berechtigungsnachweise auf das Menü Aktionen
, um eine Liste mit Optionen für Ihre Enginekonfiguration zu öffnen.
- Klicken Sie zum Anzeigen des Konfigurationswerts auf Konfiguration anzeigen.
- Klicken Sie auf Bestätigen, nachdem Sie sichergestellt haben, dass Sie sich in einer sicheren Umgebung befinden.
Der Wert des geheimen Schlüssels wird 15 Sekunden lang angezeigt und der Dialog wird geschlossen.
Konfigurationswert einer Engine über die Befehlszeilenschnittstelle abrufen
Sie können die Konfiguration einer Engine über die Befehlszeilenschnittstelle von Secrets Manager abrufen. Ersetzen Sie im folgenden Beispielbefehl den Namen der Enginekonfiguration durch den Namen Ihrer Konfiguration. Das Abrufen einer Konfiguration ist nur gültig, wenn die IAM-Anmeldeinformations-Engine mit einem API-Schlüssel konfiguriert wird.
ibmcloud secrets-manager configuration --name EXAMPLE_CONFIG --service-url https://{instance_ID}.{region}.secrets-manager.appdomain.cloud
Ersetzen Sie {instance_ID} und {region} durch die Werte, die für Ihre Serviceinstanz von Secrets Manager gelten. Um die Endpunkt-URL zu finden, die für Ihre Instanz spezifisch ist, können Sie sie von der Seite Endpunkte in der Benutzerschnittstelle von Secrets Manager kopieren. Weitere Informationen finden Sie unter Endpunkt-URLs anzeigen.
Konfigurationswert einer Engine über API abrufen
Sie können die Konfiguration einer Engine mithilfe der Secrets Manager-API abrufen. Ersetzen Sie in der folgenden Beispielanforderung den Namen der Enginekonfiguration durch den Namen Ihrer Konfiguration. Das Abrufen einer Konfiguration ist nur gültig, wenn die IAM-Anmeldeinformations-Engine mit einem API-Schlüssel konfiguriert wird.
curl -X GET --location --header "Authorization: Bearer {iam_token}" \
--header "Accept: application/json" \
"https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/configurations/{name}"
Ersetzen Sie {instance_ID} und {region} durch die Werte, die für Ihre Serviceinstanz von Secrets Manager gelten. Um die Endpunkt-URL zu finden, die für Ihre Instanz spezifisch ist, können Sie sie von der Seite Endpunkte in der Benutzerschnittstelle von Secrets Manager kopieren. Weitere Informationen finden Sie unter Endpunkt-URLs anzeigen.
Eine erfolgreiche Antwort gibt den Wert der Motorkonfiguration zusammen mit anderen Metadaten zurück. Weitere Informationen über die erforderlichen und optionalen Abfrageparameter finden Sie unter Konfiguration abrufen.
Nächste Schritte
Jetzt können Sie mit Secrets Manager IAM-Anmeldeinformationen erzeugen. Klicken Sie in der Benutzerschnittstelle von Secrets Manager auf Geheime Schlüssel > Hinzufügen > IAM-Berechtigungsnachweise, um das Erstellen geheimer Schlüssel zu starten.
- IAM-Berechtigungsnachweise erstellen
- Automatisieren Sie die Einrichtung der Secrets Manager IAM Engine mit dem Secrets Manager IAM Engine Modul.