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
NC | NSFS | Config Dir Restructure - Add users/ Dir
1. Update IAM API Users, Access Keys and additional changes in accountspace_fs:
- Move the config creation from the function _copy_data_from_requesting_account_to_account_config to the create_user.
- Fix the ARN account ID for root accounts that were operated by the roots accounts manager (before we copied the requesting_account._id which was true only for root accounts on IAM users).
- Fix _check_root_account as it has a redundant line that was not relevant (it was there when we thought of additional case, but we never get to it).
- Add 2 helper functions: _get_account_owner_id_for_arn, _get_owner_account_argument.
- Improve performance in the function _check_if_root_account_does_not_have_IAM_users_before_deletion after we have the new structure.
2. Update the ConfigFS module to support the new structure and operate on users configs.
3. Update docs:
- With the config dire restructure (identities/, accounts_by_name/, users/directories).
- IAM docs - regarding the naming scope (that we have with the new structure) and about the new structure with users/ directory.
4. Update the IAM API tests:
- Mainly reading the config file in the new structure.
- Add account validation to accounts created hardcoded (to avoid schema changes without them updated).
- Refactor `it` names to multiple lines.
5. In rest_s3 change the 'is_owner` part (the gap mentioned in NC | Bucket Owner Removal #8289), where it checks the name, to make sure the account is not a user with the same name.
Signed-off-by: shirady <57721533+shirady@users.noreply.github.com>
Copy file name to clipboardExpand all lines: docs/NooBaaNonContainerized/Configuration.md
+36-13Lines changed: 36 additions & 13 deletions
Original file line number
Diff line number
Diff line change
@@ -49,7 +49,7 @@ For Developers - Use `--config_root` flag for specifying a custom configuration
49
49
50
50
### Configuration files permissions
51
51
Mode
52
-
* Configuration files generated under the `accounts/` or `buckets/` directories will have 600 permissions, granting read and write access exclusively to the owner of each configuration file.
52
+
* Configuration files generated under the `identities/` or `buckets/` directories will have 600 permissions, granting read and write access exclusively to the owner of each configuration file.
53
53
54
54
Ownership
55
55
* Configuration file created by the NooBaa CLI tool will be owned by the user who ran the NooBaa CLI command.
@@ -62,8 +62,9 @@ The default config directory structure contains the following files/directories
62
62
> sudo ls /etc/noobaa.conf.d/
63
63
system.json // Required
64
64
access_keys/ // Required
65
-
accounts/ // Required
65
+
accounts_by_name/ // Required
66
66
buckets/ // Required
67
+
identities/ // Required
67
68
config.json // Optional
68
69
master_keys.json // Optional
69
70
certificates/ // Optional
@@ -81,8 +82,9 @@ config_dir_redirect // Required
81
82
> sudo ls /path/to/custom/config/dir/
82
83
system.json // Required
83
84
access_keys/ // Required
84
-
accounts/ // Required
85
+
accounts_by_name/ // Required
85
86
buckets/ // Required
87
+
identities/ // Required
86
88
config.json // Optional
87
89
master_keys.json // Optional
88
90
certificates/ // Optional
@@ -113,29 +115,33 @@ certificates/ // Optional
113
115
}
114
116
}
115
117
```
116
-
`accounts/` -
118
+
119
+
`accounts_by_name/`
117
120
*<u>Type</u>: Directory.
118
121
*<u>Required</u>: Yes.
119
-
*<u>Description</u>: A directory that contains configuration files for individual accounts, each account configuration file is named {account_name}.json and adheres to the [account schema](../../src/server/system_services/schemas/nsfs_account_schema.js).
122
+
*<u>Description</u>: A directory that contains symlinks to accounts configurations, each symlink named
123
+
{account_name}.symlink, linking to the account config within `identities/<account-id>` directory,
124
+
configuration file is named identity.json and adheres to the [account schema](../../src/server/system_services/schemas/nsfs_account_schema.js). The account name symlink points to a relative path of the account rather than an absolute path, for example: `../identities/1111/identity.json`.
*<u>Description</u>: A directory that contains symlinks to accounts configurations, each symlink named {access_key}.symlink, linking to an account within `accounts/` directory. The access key symlink points to a relative path of the account rather than an absolute path, for example: `../accounts/alice.json`.
136
+
*<u>Description</u>: A directory that contains symlinks to accounts configurations, each symlink named {access_key}.symlink, linking to an account within `identities/<account-id>/` directory. The access key symlink points to a relative path of the account rather than an absolute path, for example: `../identities/3333/identity.json`.
*<u>Description</u>: A directory that contains configuration files for individual identities, each identity configuration file is named {identity}.json. In case the identity is an account it adheres to the [account schema](../../src/server/system_services/schemas/nsfs_account_schema.js).
Copy file name to clipboardExpand all lines: docs/design/iam.md
+70Lines changed: 70 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -127,6 +127,76 @@ Here attached a diagram with all the accounts that we have in our system:
127
127
- IAM DeleteAccessKey: AccessKeyId, UserName
128
128
- IAM ListAccessKeys: UserName (not supported: Marker, MaxItems)
129
129
130
+
### Configuration Directory Components With users
131
+
If account creates a user its config file will be created under identities/<user-id>.identity.json and under the account will be created `users/` directory and inside it it will link to the config.
132
+
Example:
133
+
Note: In this example, we didn't use `system.json`, `config.json`, and `certificates/`.
134
+
1. Configuration directory with 1 account (name: alice, ID: 1111):
- Account names are unique between the accounts, for example, if we have account with name John, you cannot create a new account with the name John (and also cannot update the name of an existing account to John).
171
+
- Usernames are unique only inside the account, for example: username Robert can be under account-1, and another user with username Robert can be under account-2.
172
+
Note: The username cannot be the same as the account, for example: under account John we cannot create a username John (and also cannot update the name of an existing username to John). The reason for limiting it is that in the IAM API of Access Key (for example ListAccessKeys) it can be done by account on himself or on another user, and it passes the `--user-name` flag.
173
+
174
+
Example: 2 accounts (alice and bob) both of them have user with username Robert (notice the different ID number).
0 commit comments