-
Notifications
You must be signed in to change notification settings - Fork 114
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Storing user object in all APIs and enabling filter of response based on user #115
Conversation
b7b611e
to
1838cc6
Compare
… on user Signed-off-by: Ravi Thaluru <[email protected]>
Codecov Report
@@ Coverage Diff @@
## main #115 +/- ##
============================================
- Coverage 77.26% 75.51% -1.76%
+ Complexity 1900 1893 -7
============================================
Files 258 259 +1
Lines 10523 10905 +382
Branches 1676 1730 +54
============================================
+ Hits 8131 8235 +104
- Misses 1474 1721 +247
- Partials 918 949 +31
Continue to review full report at Codecov.
|
…d enabled user permission checks on top of managed index APIs
@@ -154,6 +154,7 @@ dependencies { | |||
compile group: 'commons-codec', name: 'commons-codec', version: '1.13' | |||
compile "org.jetbrains.kotlin:kotlin-stdlib:${kotlin_version}" | |||
compile "org.jetbrains.kotlin:kotlin-stdlib-common:${kotlin_version}" | |||
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlin_version}" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: Are we adding a whole dependency just for the "use" helper function? Is it not possible to just copy that helper function over? Seems a bit overkill.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, its added only for use
method. Can copy the method instead - do we follow any rule of thumb on when to copy vs add dependency?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think there's a rule of thumb we follow.. I'd just look at dependency size (+ maintenance overhead, maintainer activity, etc.) vs what we're using from it. If it's just a simple method that we can import ourselves then might be able to not add a whole dependency, but if you find you're having to pull in a lot of things it's fine to add.
...ain/kotlin/org/opensearch/indexmanagement/indexstatemanagement/model/ManagedIndexMetaData.kt
Outdated
Show resolved
Hide resolved
src/test/kotlin/org/opensearch/indexmanagement/IndexManagementIndicesIT.kt
Outdated
Show resolved
Hide resolved
src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/ManagedIndexCoordinator.kt
Show resolved
Hide resolved
.../indexmanagement/indexstatemanagement/transport/action/addpolicy/TransportAddPolicyAction.kt
Show resolved
Hide resolved
src/main/kotlin/org/opensearch/indexmanagement/opensearchapi/OpenSearchExtensions.kt
Show resolved
Hide resolved
val injectedUser: User? = User.parse(threadContext.getTransient<String>(ConfigConstants.OPENSEARCH_SECURITY_USER_INFO_THREAD_CONTEXT)) | ||
return if (injectedUser == null) { | ||
null | ||
} else { | ||
User(injectedUser.name, injectedUser.backendRoles, injectedUser.roles, injectedUser.customAttNames) | ||
} | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we have unit tests for all the below new methods?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
no, don't have the tests, will add
Few top level comments:
|
val indexMetadatas = response.state.metadata.indices | ||
indexMetadatas.forEach { | ||
indicesToRemove.putIfAbsent(it.value.indexUUID, it.key) | ||
client.threadPool().threadContext.stashContext().use { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Curious, does this throw an exception if user is trying to access an index they can't access?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, this is a miss. Updating the check for ChangePolicy and RemovePolicy
If an existing ISM job doesn't have user info saved, what are the ways for user to adopt the new security model? And same question for Rollup and Transform jobs without user. |
@@ -257,7 +259,12 @@ object RollupRunner : | |||
} | |||
} | |||
|
|||
when (val result = rollupMapperService.attemptCreateRollupTargetIndex(updatableJob, clusterConfigurationProvider.hasLegacyPlugin)) { | |||
val result = withClosableContext( | |||
IndexManagementSecurityContext(job.id, settings, threadPool.threadContext, job.user) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we need to create new IndexManagementSecurityContext each time (here and below in while loop etc) or can we just reuse a single one?
...arch/indexmanagement/indexstatemanagement/transport/action/explain/TransportExplainAction.kt
Outdated
Show resolved
Hide resolved
Yes, updating would be the option for user to fix |
* Add integTest script to the repo (#94) Signed-off-by: Peter Zhu <[email protected]> * Removing Usages of Action Get Call and using listeners (#100) Signed-off-by: Aditya Jindal <[email protected]> * Enhance ISM template (#105) Signed-off-by: bowenlan-amzn <[email protected]> * Explain response still use old opendistro policy id (#109) * Explain response still use old opendistro policy id * Use hardcoded policyid setting in tests for explain response * Trying to fix flaky tests * Storing user information as part of the job when security plugin is installed (#113) Signed-off-by: Ravi Thaluru <[email protected]> * ISM/Notification channel support (#117) * Updates NAME of transport actions * Upgrades Kotlin version, updates dependencies on other OS plugins, adds notification plugin as a test resource and includes it in test clusters * Adds support for Channels in error notifications and notification actions * Adds support for sending notifications to channels * Adds support for publishing notifications to the legacy destinations through the Notification plugin and some cleanup * Removes notification alerting jar dependency * Adds compile only dep on commons codec for digest utils sha1 method in ism rollup * Updates Error Notification to make channel/destination nullable, and adds helper methods for publish calls * Constructs URL for legacy custom webhook Signed-off-by: Drew Baugher <[email protected]> * Fixes Feature enum and dep Signed-off-by: Drew Baugher <[email protected]> * Trying something else Signed-off-by: Drew Baugher <[email protected]> * Addresses comments Signed-off-by: Drew Baugher <[email protected]> * Storing user object in all APIs and enabling filter of response based on user (#115) Signed-off-by: Ravi Thaluru <[email protected]> * Upgrade dependencies to 1.1 and build snapshot by default. (#121) Signed-off-by: dblock <[email protected]> * Security improvements (#126) Signed-off-by: Ravi Thaluru <[email protected]> * Removes support for notification plugin (#136) Signed-off-by: Drew Baugher <[email protected]> * Updating security filtering logic (#137) Signed-off-by: Ravi Thaluru <[email protected]> * Release note for 1.1.0.0 release. (#139) * Release note for 1.1.0.0 release. Signed-off-by: bowenlan-amzn <[email protected]> * Correct copyright notices * Uses published daily snapshot dependencies (#141) Signed-off-by: Drew Baugher <[email protected]> * License header check (#142) * Provide default copyright header using IDE feature Signed-off-by: bowenlan-amzn <[email protected]> * Address #103 history write index is rolled over even if the history indices are disabled * Removed integtest.sh. (#148) Signed-off-by: dblock <[email protected]> * Adds mavenLocal back to repositories (#158) Signed-off-by: Drew Baugher <[email protected]> * Making snapshot name to scripted input in template (#77) Signed-off-by: Ravi Thaluru <[email protected]> * Fix issues with security changes in rollup runnner (#161) * Updates index management version to 1.2 (#157) * Updates index management version to 1.2 * Updates job scheduler snapshot to 1.2 in test resources Signed-off-by: Robert Downs <[email protected]> * Adds setting to search all rollup jobs on a target index (#165) * Adds cluster setting to search all rollup jobs Signed-off-by: Clay Downs <[email protected]> * Adds implementation for the delay feature in rollup jobs (#147) * Adds delay implementation for rollup jobs * Removes non-continuous delay implementation * Adds additional rollup delay tests Signed-off-by: Clay Downs <[email protected]> * Updates testCompile mockito version, adds AwaitsFix annotation to MetadataRegressionIT tests (#168) * Updates testCompile mockito version to match OpenSearch changes * AwaitsFix on the failing MetadataRegressionIT tests Signed-off-by: Robert Downs <[email protected]> * Adds cluster setting to configure index state management jitter (#153) * Adds jitter cluster setting, sets jitter to 0 for ISM tests Signed-off-by: Clay Downs <[email protected]> * Allows out of band rollovers on an index without causing ISM to fail (#180) * Allows out of band rollovers on an index without causing ISM to fail Signed-off-by: Drew Baugher <[email protected]> * Fixes detekt issue Signed-off-by: Drew Baugher <[email protected]> * Remove policy API on read only indices (#182) * In explain API not showing the total count to all users (#185) Co-authored-by: Peter Zhu <[email protected]> Co-authored-by: Aditya Jindal <[email protected]> Co-authored-by: Bowen Lan <[email protected]> Co-authored-by: Ravi <[email protected]> Co-authored-by: Drew Baugher <[email protected]> Co-authored-by: Daniel Doubrovkine (dB.) <[email protected]>
… on user (opensearch-project#115) Signed-off-by: Ravi Thaluru <[email protected]>
Signed-off-by: Ravi Thaluru [email protected]
Issue #, if available:
#75
Description of changes:
user
which stores the user informationuser
informationuser
informationCall outs:
ManagedIndexAction
, i.e if user has this permission on an index they will be able to manage the index - this check is implemented in AddPolicy, removePolicy, ChangePolicy, RetryFailedIndex API and the cluster event sweeper to determine the policy that should be applied to an indexCheckList:
[ ] Commits are signed per the DCO using --signoff
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.