Manage Internal Users
Overview
The manage_internal_users
program is provided to aid in the provisioning access for OAuth based users against the N2ACD platform.
Supports:
- Provisioning Login access to the N2ACD platform for OAuth users.
- Provisioning of Customer specific privileges for non administrative users.
- Revoking Login and Customer privileges.
- Viewing Customer privileges for OAuth users.
Running manage_internal_users.pl --help
will show the program usage.
Manage N2ACD internal users.
Database connection:
--db-host = N2ACD database host name or IP address. Default = $DEFAULT_DB_HOST.
--db-port = N2ACD database port. Default = $DEFAULT_DB_PORT.
--db-name = N2ACD database name. Default = $DEFAULT_DB_NAME.
--db-connect = N2ACD database connection string. Alternative to
--db-host / --db-port / --db-name providing full
control over the DBI connection string. This may
be useful if [for example] connecting to a
service defined in ~/.pg_service.conf.
--db-user = N2ACD database user name. Default = $DEFAULT_DB_USER.
--db-password = N2ACD database user password. If not directly specified, credentials specified in ~/.pgpass will be used.
Current users can be listed with:
--list-users
For all other user manipulation functions, one of the follow must be provided:
--external-id = The GUID string that maps to the external user that will be authorised.
--external-upn = The string that maps to the external user principal that will be authorised.
User manipulation functions:
--create = Create a new user record mapped to the provided external ID or UPN.
--remove = Remove the user record mapped to the provided external ID or UPN.
--enable = Enable the user record mapped to the provided external ID or UPN.
--disable = Disable the user record mapped to the provided external ID or UPN.
--restricted-access = Restrict user customer access to the customer list for the user mapped to the provided external ID or UPN.
--unrestricted-access = Unrestrict user customer access to the customer list for the user mapped to the provided external ID or UPN.
--add-customer = The name of an N2ACD customer. Create a new association between the specified customer and the user with the provided external ID or UPN.
--remove-customer = The name of an N2ACD customer. Remove any association between the specified customer and the user with the provided external ID or UPN.
--show-customers = Show all customers associated with the user with the provided external ID or UPN.
--list-users = Show all user records.
Common Options
The following common options may be specified when executing manage_internal_users
.
Option | Type | Default | Description |
---|---|---|---|
--db-host |
String | localhost |
IP address or FQDN of the PostgreSQL database instance to connect to. |
--db-port |
Number | 5432 |
Port number of the PostgreSQL database instance to connect to. |
--db-name |
String | n2in_owner |
Name of the PostgreSQL database that contains the N2ACD schema. |
--db-connect |
PSQL DB Connection String | Alternative option to using --db-host --db-port and --db-name . Specified as a PostgreSQL connection string. See PostgreSQL Connection Strings for more information. |
|
--db-user |
String | n2acd_owner |
The username of the user to connect to the PostgreSQL database instance with. |
--db-password |
String | The password for the user specified with --db-user to connect to the PostgreSQL database instance with. |
|
--external-id |
UID String | Required 1 The UID of the external OAuth user to create a mapping for. In Azure this is the User Object ID and is formatted as 8e24dfc7-8ac4-4f06-b308-89f906c7a9b3 . |
|
--external-upn |
String | Required 1The UPN of the external OAuth user to create a mapping for. In Azure this is the User Principal Name and is formatted as user@tenant.onmicrosoft.com |
|
--create |
Switch | If provided, a user mapped to the provided UID or UPN will be created within the N2ACD database. | |
--remove |
Switch | If provided, the user mapped to the provided UID or UPN will be removed from the N2ACD database. | |
--add-customer |
String | The name of an N2ACD customer. Access to this customer will be granted to the user mapped to the provided UID or UPN within the N2ACD database. | |
--remove-customer |
String | The name of an N2ACD customer. Access to this customer will be revoked from the user mapped to the provided UID or UPN within the N2ACD database. | |
--show-customers |
Switch | If provided, the customers currently associated with the user mapped to the provided UID or UPN within the N2ACD database will be listed. | |
--enable |
Switch | If provided, the user mapped to the provided UID or UPN will be enabled. | |
--disable |
Switch | If provided, the user mapped to the provided UID or UPN will be disabled. | |
--restricted-access |
Switch | If provided, the user mapped to the provided UID or UPN will use the restricted access list of customers associated with it. | |
--unrestricted-access |
Switch | If provided, the user mapped to the provided UID or UPN will be granted access to all customers. | |
--list-users |
Switch | If provided, all users currently configured on the platform will be listed. |
1. Either the UID or UPN is required. Only one may be specified.
Example Usages
Create External OAuth User Mapping
./manage_internal_users.pl --create --external-upn 'user@tenant.onmicrosoft.com' --db-password <db_password>
---------------------------------------------------------------------------
DB host = 'localhost'
DB port = '5432'
DB name = 'n2in'
DB user = n2acd_owner
DB password = [specified]
External ID = [not specified]
External Principal = 'user@tenant.onmicrosoft.com'
Creating External User? = Yes
Removing External User? = No
Enabling External User? = No
Disabling External User? = No
Restricting External User? = No
Unrestrictin External User? = No
Customer to Add = [not specified]
Customer to Remove = [not specified]
Showing Customers? = No
Listing Users? = No
---------------------------------------------------------------------------
NOTICE: Created External User ID 'N/A' User Principal 'user@tenant.onmicrosoft.com' with User ID '8'
Associate Test Customer with New OAuth User Mapping
./manage_internal_users.pl --external-id '8e24dfc7-8ac4-4f06-b308-89f906c7a9b2' --add-customer "Test" --db-password <db_password>
---------------------------------------------------------------------------
DB host = 'localhost'
DB port = '5432'
DB name = 'n2in'
DB user = n2acd_owner
DB password = [specified]
External ID = '8e24dfc7-8ac4-4f06-b308-89f906c7a9b2'
External Principal = [not specified]
Creating External User? = Yes
Removing External User? = No
Enabling External User? = No
Disabling External User? = No
Restricting External User? = No
Unrestrictin External User? = No
Customer to Add = 'test'
Customer to Remove = [not specified]
Showing Customers? = No
Listing Users? = No
---------------------------------------------------------------------------
NOTICE: Created External User ID '8e24dfc7-8ac4-4f06-b308-89f906c7a9b2' User Principal 'N/A' with User ID '10'
NOTICE: Created User Customer Mapping for User ID '10' to Customer 'test' with User Customer ID '39516'
Show Customers for OAuth User
./manage_internal_users.pl --show-customers --external-id '8e24dfc7-8ac4-4f06-b308-89f906c7a9b2' --db-password <db_password>
---------------------------------------------------------------------------
DB host = 'localhost'
DB port = '5432'
DB name = 'n2in'
DB user = n2acd_owner
DB password = [specified]
External ID = '8e24dfc7-8ac4-4f06-b308-89f906c7a9b2'
External Principal = [not specified]
Creating External User? = No
Removing External User? = No
Enabling External User? = No
Disabling External User? = No
Restricting External User? = No
Unrestrictin External User? = No
Customer to Add = [not specified]
Customer to Remove = [not specified]
Showing Customers? = Yes
Listing Users? = No
---------------------------------------------------------------------------
NOTICE: Found existing Internal User ID '10' for External ID '8e24dfc7-8ac4-4f06-b308-89f906c7a9b2' External UPN 'N/A'
NOTICE: Configured Customers for External ID '8e24dfc7-8ac4-4f06-b308-89f906c7a9b2' External Principal 'N/A':
Customer ID | External ID | Customer Name
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
9865 | test | test
Show all Users
./manage_internal_users.pl --list-users --db-password <db_password>
---------------------------------------------------------------------------
DB host = 'localhost'
DB port = '5432'
DB name = 'n2in'
DB user = n2acd_owner
DB password = [specified]
External ID = [not specified]
External Principal = [not specified]
Creating External User? = No
Removing External User? = No
Enabling External User? = No
Disabling External User? = No
Restricting External User? = No
Unrestrictin External User? = No
Customer to Add = [not specified]
Customer to Remove = [not specified]
Showing Customers? = No
Listing Users? = Yes
---------------------------------------------------------------------------
NOTICE: Configured Users:
User ID | External User Reference | External User Principal | Enabled/Disabled | Restricted/Unrestricted
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 | 8e24dfc7-8ac4-4f06-b308-89f906c7a9b2 | - | Enabled | Restricted
2 | 6696ae8f-7791-41e0-b265-b119de4565f1 | test | Enabled | Restricted
3 | - | user@tenant.onmicrosoft.com | Enabled | Restricted
Disable a Users Access
./manage_internal_users.pl --external-id '8e24dfc7-8ac4-4f06-b308-89f906c7a9b2' --disable --db-password <db_password>
---------------------------------------------------------------------------
DB host = 'localhost'
DB port = '5432'
DB name = 'n2in'
DB user = n2acd_owner
DB password = [specified]
External ID = '8e24dfc7-8ac4-4f06-b308-89f906c7a9b2'
External Principal = [not specified]
Creating External User? = No
Removing External User? = No
Enabling External User? = No
Disabling External User? = Yes
Restricting External User? = No
Unrestrictin External User? = No
Customer to Add = [not specified]
Customer to Remove = [not specified]
Showing Customers? = No
Listing Users? = No
---------------------------------------------------------------------------
NOTICE: Found existing Internal User ID '10' for External ID '8e24dfc7-8ac4-4f06-b308-89f906c7a9b2' External UPN 'N/A'
NOTICE: Updated User enabled state to 'Disabled' for for External ID '8e24dfc7-8ac4-4f06-b308-89f906c7a9b2' External Principal 'N/A'