You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Implement multi-pattern support for groups and users
* adjust regex for multi-pattern
* Allow - and ' ' in names
* UPDATE envVar creation logic for Match
* Update template.yaml
* Update template.yaml
* Adding support for '*' to sync all and empty to sync nothing.
* Improvements to Filtering
UserMatch now considered in addition to GroupMatch.
Improved filtering for external users
proper handling of nested groups.
* Improve logging
Added dump of envVars
Corrected copy&paste error in log message.
* Adding user detail caching
To reduce repeated calls to the directory api, prefetch all users and use when processing groups.
* Update README.md
Copy file name to clipboardexpand all lines: README.md
+10-3
Original file line number
Diff line number
Diff line change
@@ -11,7 +11,7 @@
11
11
SSO Sync will run on any platform that Go can build for. It is available in the [AWS Serverless Application Repository](https://console.aws.amazon.com/lambda/home#/create/app?applicationId=arn:aws:serverlessrepo:us-east-2:004480582608:applications/SSOSync)
12
12
13
13
> [!CAUTION]
14
-
> When using ssosync with an instance or IAM Identity Center integrated with AWS Control Tower. AWS Control Tower creates a number of groups and users (directly via the Identity Store API), when an external identity provider is configured these users and groups are can not be used to log in. However it is important to remember that because ssosync implemements a uni-directional sync it will make the IAM Identity Store match the subset of your Google Workspaces directory you specify, including removing these groups and users created by AWS Control Tower. There is a PFR [#88 - ssosync deletes Control Tower groups](https://github.com/awslabs/ssosync/issues/88) to implement an option to ignore these users and groups, hopefully this will be implemented in version 3.x.
14
+
> When using ssosync with an instance of IAM Identity Center integrated with AWS Control Tower. AWS Control Tower creates a number of groups and users (directly via the Identity Store API), when an external identity provider is configured these users and groups are can not be used to log in. However it is important to remember that because ssosync implemements a uni-directional sync it will make the IAM Identity Store match the subset of your Google Workspaces directory you specify, including removing these groups and users created by AWS Control Tower. There is a PFR [#88 - ssosync deletes Control Tower groups](https://github.com/awslabs/ssosync/issues/88) to implement an option to ignore these users and groups, hopefully this will be implemented in version 3.x.
15
15
16
16
> [!WARNING]
17
17
> There are breaking changes for versions `>= 0.02`
@@ -30,6 +30,13 @@ SSO Sync will run on any platform that Go can build for. It is available in the
30
30
> [!IMPORTANT]
31
31
> `>= 2.1.0` switched to using `provided.al2` powered by ARM64 instances.
32
32
33
+
> [!Info]
34
+
> As of `v2.2.0` multiple query patterns are supported for both Group and User matching, simply separate each query with a `,`. For full sync of groups and/or users specify '*' in the relevant match field.
35
+
> User match and group match can now be used in combination with the sync method of groups.
36
+
> Nested groups will now be flattened into the top level groups.
37
+
> external users are ignored.
38
+
> User details are now cached to reduce the number of api calls and improve execution times on large directories.
39
+
33
40
## Why?
34
41
35
42
As per the [AWS SSO](https://aws.amazon.com/single-sign-on/) Homepage:
@@ -146,15 +153,15 @@ Flags:
146
153
-e, --endpoint string AWS SSO SCIM API Endpoint
147
154
-u, --google-admin string Google Workspace admin user email
148
155
-c, --google-credentials string path to Google Workspace credentials file (default "credentials.json")
149
-
-g, --group-match string Google Workspace Groups filter query parameter, example: 'name:Admin*email:aws-*', see: https://developers.google.com/admin-sdk/directory/v1/guides/search-groups
156
+
-g, --group-match string Google Workspace Groups filter query parameter, a simple '*' denotes sync all groups (and any users that are members of those groups). example: 'name:Admin*,email:aws-*','name=Admins' or '*' see: https://developers.google.com/admin-sdk/directory/v1/guides/search-groups
150
157
-h, --help helpfor ssosync
151
158
--ignore-groups strings ignores these Google Workspace groups
152
159
--ignore-users strings ignores these Google Workspace users
153
160
--include-groups strings include only these Google Workspace groups, NOTE: only works when --sync-method 'users_groups'
154
161
--log-format string log format (default "text")
155
162
--log-level string log level (default "info")
156
163
-s, --sync-method string Sync method to use (users_groups|groups) (default "groups")
-m, --user-match string Google Workspace Users filter query parameter, a simple '*' denotes sync all users in the directory. example: 'name:John*,email:admin*','*' or name=John Doe,email:admin*' see: https://developers.google.com/admin-sdk/directory/v1/guides/search-users
158
165
-v, --version version for ssosync
159
166
-r, --region AWS region where identity store exists
rootCmd.Flags().StringSliceVar(&cfg.IgnoreUsers, "ignore-users", []string{}, "ignores these Google Workspace users")
288
296
rootCmd.Flags().StringSliceVar(&cfg.IgnoreGroups, "ignore-groups", []string{}, "ignores these Google Workspace groups")
289
297
rootCmd.Flags().StringSliceVar(&cfg.IncludeGroups, "include-groups", []string{}, "include only these Google Workspace groups, NOTE: only works when --sync-method 'users_groups'")
rootCmd.Flags().StringVarP(&cfg.UserMatch, "user-match", "m", "", "Google Workspace Users filter query parameter, example: 'name:John*' 'name=John Doe,email:admin*', to sync all users in the directory specify '*'. For query syntax and more examples see: https://developers.google.com/admin-sdk/directory/v1/guides/search-users")
299
+
rootCmd.Flags().StringVarP(&cfg.GroupMatch, "group-match", "g", "*", "Google Workspace Groups filter query parameter, example: 'name:Admin*' 'name=Admins,email:aws-*', to sync all groups (and their member users) specify '*'. For query syntax and more examples see: https://developers.google.com/admin-sdk/directory/v1/guides/search-groups")
292
300
rootCmd.Flags().StringVarP(&cfg.SyncMethod, "sync-method", "s", config.DefaultSyncMethod, "Sync method to use (users_groups|groups)")
293
301
rootCmd.Flags().StringVarP(&cfg.Region, "region", "r", "", "AWS Region where AWS SSO is enabled")
294
302
rootCmd.Flags().StringVarP(&cfg.IdentityStoreID, "identity-store-id", "i", "", "Identifier of Identity Store in AWS SSO")
0 commit comments