From f27e5164d0549f7eea083d9ce7fd4279c5de6bb9 Mon Sep 17 00:00:00 2001 From: Jason Ertel Date: Fri, 4 Sep 2020 17:01:45 -0400 Subject: [PATCH] Update to latest kratos; add support for a custom status trait to represent whether a user is locked or not; refactor so-user to use new enable/disable capabilities in SOC; remove 'delete' option from so-user usage to avoid having user lists out of sync across SOC and external apps --- salt/common/tools/sbin/so-cortex-user-add | 1 + salt/common/tools/sbin/so-cortex-user-enable | 1 + salt/common/tools/sbin/so-fleet-user-add | 1 + salt/common/tools/sbin/so-fleet-user-enable | 1 + salt/common/tools/sbin/so-thehive-user-add | 1 + salt/common/tools/sbin/so-user | 78 +++++++++++++++----- salt/soc/files/kratos/kratos.yaml | 60 ++++++--------- salt/soc/files/kratos/schema.json | 71 ++++++++++-------- 8 files changed, 129 insertions(+), 85 deletions(-) diff --git a/salt/common/tools/sbin/so-cortex-user-add b/salt/common/tools/sbin/so-cortex-user-add index 43126f709..dbb5b9716 100755 --- a/salt/common/tools/sbin/so-cortex-user-add +++ b/salt/common/tools/sbin/so-cortex-user-add @@ -48,6 +48,7 @@ if [[ "$resp" =~ \"status\":\"Ok\" ]]; then echo "Successfully added user to Cortex." else echo "Unable to add user to Cortex; user might already exist." + echo $resp exit 2 fi \ No newline at end of file diff --git a/salt/common/tools/sbin/so-cortex-user-enable b/salt/common/tools/sbin/so-cortex-user-enable index 63cd2f089..cbfdceb25 100755 --- a/salt/common/tools/sbin/so-cortex-user-enable +++ b/salt/common/tools/sbin/so-cortex-user-enable @@ -51,6 +51,7 @@ if [[ "$resp" =~ \"status\":\"Locked\" || "$resp" =~ \"status\":\"Ok\" ]]; then echo "Successfully updated user in Cortex." else echo "Failed to update user in Cortex." + echo $resp exit 2 fi \ No newline at end of file diff --git a/salt/common/tools/sbin/so-fleet-user-add b/salt/common/tools/sbin/so-fleet-user-add index 9637aa63c..5560b0522 100755 --- a/salt/common/tools/sbin/so-fleet-user-add +++ b/salt/common/tools/sbin/so-fleet-user-add @@ -54,5 +54,6 @@ if [[ $? -eq 0 ]]; then echo "Successfully added user to Fleet." else echo "Unable to add user to Fleet; user might already exist." + echo $resp exit 2 fi \ No newline at end of file diff --git a/salt/common/tools/sbin/so-fleet-user-enable b/salt/common/tools/sbin/so-fleet-user-enable index 0ea826391..a632844bb 100755 --- a/salt/common/tools/sbin/so-fleet-user-enable +++ b/salt/common/tools/sbin/so-fleet-user-enable @@ -53,5 +53,6 @@ if [[ $? -eq 0 ]]; then echo "Successfully updated user in Fleet." else echo "Failed to update user in Fleet." + echo $resp exit 2 fi \ No newline at end of file diff --git a/salt/common/tools/sbin/so-thehive-user-add b/salt/common/tools/sbin/so-thehive-user-add index 0c9553abc..fc7a56f63 100755 --- a/salt/common/tools/sbin/so-thehive-user-add +++ b/salt/common/tools/sbin/so-thehive-user-add @@ -47,5 +47,6 @@ if [[ "$resp" =~ \"status\":\"Ok\" ]]; then echo "Successfully added user to TheHive." else echo "Unable to add user to TheHive; user might already exist." + echo $resp exit 2 fi diff --git a/salt/common/tools/sbin/so-user b/salt/common/tools/sbin/so-user index 4616be3f5..57f51fe9a 100755 --- a/salt/common/tools/sbin/so-user +++ b/salt/common/tools/sbin/so-user @@ -11,12 +11,13 @@ . /usr/sbin/so-common if [[ $# < 1 || $# > 2 ]]; then - echo "Usage: $0 [email]" + echo "Usage: $0 [email]" echo "" echo " list: Lists all user email addresses currently defined in the identity system" echo " add: Adds a new user to the identity system; requires 'email' parameter" echo " update: Updates a user's password; requires 'email' parameter" - echo " delete: Deletes an existing user; requires 'email' parameter" + echo " enable: Enables a user; requires 'email' parameter" + echo " disable: Disables a user; requires 'email' parameter" echo " validate: Validates that the given email address and password are acceptable for defining a new user; requires 'email' parameter" echo " valemail: Validates that the given email address is acceptable for defining a new user; requires 'email' parameter" echo " valpass: Validates that a password is acceptable for defining a new user" @@ -63,7 +64,7 @@ function findIdByEmail() { email=$1 response=$(curl -Ss ${kratosUrl}/identities) - identityId=$(echo "${response}" | jq ".[] | select(.addresses[0].value == \"$email\") | .id") + identityId=$(echo "${response}" | jq ".[] | select(.verifiable_addresses[0].value == \"$email\") | .id") echo $identityId } @@ -113,7 +114,7 @@ function listUsers() { response=$(curl -Ss ${kratosUrl}/identities) [[ $? != 0 ]] && fail "Unable to communicate with Kratos" - echo "${response}" | jq -r ".[] | .addresses[0].value" | sort + echo "${response}" | jq -r ".[] | .verifiable_addresses[0].value" | sort } function createUser() { @@ -122,17 +123,8 @@ function createUser() { now=$(date -u +%FT%TZ) addUserJson=$(cat <