Skip to content
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

[Resource Access Control] [Part3] Introduces a sample plugin to demonstrate usage of Resource Access Control feature #5187

Draft
wants to merge 10 commits into
base: feature/resource-permissions
Choose a base branch
from
Draft
538 changes: 404 additions & 134 deletions .github/workflows/ci.yml

Large diffs are not rendered by default.

220 changes: 134 additions & 86 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -174,67 +174,67 @@ tasks.whenTaskAdded {task ->
}

def splitTestConfig = [
ciSecurityIntegrationTest: [
description: "Runs integration tests from all classes.",
filters: [
includeTestsMatching: [
"org.opensearch.security.*Integ*"
],
excludeTestsMatching: [
"org.opensearch.security.sanity.tests.*"
]
ciSecurityIntegrationTest: [
description: "Runs integration tests from all classes.",
filters: [
includeTestsMatching: [
"org.opensearch.security.*Integ*"
],
excludeTestsMatching: [
"org.opensearch.security.sanity.tests.*"
]
]
],
crossClusterTest: [
description: "Runs cross-cluster tests.",
filters: [
includeTestsMatching: [
"org.opensearch.security.ccstest.*"
]
]
],
dlicDlsflsTest: [
description: "Runs Document- and Field-Level Security tests.",
filters: [
includeTestsMatching: [
"org.opensearch.security.dlic.dlsfls.*"
]
]
],
dlicRestApiTest: [
description: "Runs REST Management API tests.",
filters: [
includeTestsMatching: [
"org.opensearch.security.dlic.rest.*"
]
]
],
indicesTest: [
description: "Runs indices tests from all classes.",
filters: [
includeTestsMatching: [
"org.opensearch.security.*indices*"
],
excludeTestsMatching: [
"org.opensearch.security.sanity.tests.*"
]
]
],
opensslCITest: [
description: "Runs portion of SSL tests related to OpenSSL. Explained in https://github.com/opensearch-project/security/pull/2301",
include: '**/OpenSSL*.class'
],
sslTest: [
description: "Runs most of the SSL tests.",
filters: [
includeTestsMatching: [
"org.opensearch.security.ssl.*"
],
excludeTestsMatching: [
"org.opensearch.security.ssl.OpenSSL*"
]
]
]
],
crossClusterTest: [
description: "Runs cross-cluster tests.",
filters: [
includeTestsMatching: [
"org.opensearch.security.ccstest.*"
]
]
],
dlicDlsflsTest: [
description: "Runs Document- and Field-Level Security tests.",
filters: [
includeTestsMatching: [
"org.opensearch.security.dlic.dlsfls.*"
]
]
],
dlicRestApiTest: [
description: "Runs REST Management API tests.",
filters: [
includeTestsMatching: [
"org.opensearch.security.dlic.rest.*"
]
]
],
indicesTest: [
description: "Runs indices tests from all classes.",
filters: [
includeTestsMatching: [
"org.opensearch.security.*indices*"
],
excludeTestsMatching: [
"org.opensearch.security.sanity.tests.*"
]
]
],
opensslCITest: [
description: "Runs portion of SSL tests related to OpenSSL. Explained in https://github.com/opensearch-project/security/pull/2301",
include: '**/OpenSSL*.class'
],
sslTest: [
description: "Runs most of the SSL tests.",
filters: [
includeTestsMatching: [
"org.opensearch.security.ssl.*"
],
excludeTestsMatching: [
"org.opensearch.security.ssl.OpenSSL*"
]
]
]
] as ConfigObject

List<String> taskNames = splitTestConfig.keySet() as List
Expand Down Expand Up @@ -500,13 +500,80 @@ configurations {
force "org.checkerframework:checker-qual:3.49.1"
force "ch.qos.logback:logback-classic:1.5.17"
force "commons-io:commons-io:2.18.0"
force "com.carrotsearch.randomizedtesting:randomizedtesting-runner:2.8.2"
force "org.hamcrest:hamcrest:2.2"
force "org.mockito:mockito-core:5.16.1"
force "net.bytebuddy:byte-buddy:1.15.11"
force "org.ow2.asm:asm:9.7.1"
force "com.google.j2objc:j2objc-annotations:3.0.0"
}
}

integrationTestImplementation.extendsFrom implementation
integrationTestRuntimeOnly.extendsFrom runtimeOnly
}

allprojects {
configurations {
integrationTestImplementation.extendsFrom implementation
compile.extendsFrom compileOnly
compile.extendsFrom testImplementation
}
dependencies {
// unit test framework
testImplementation 'org.hamcrest:hamcrest:2.2'
testImplementation 'junit:junit:4.13.2'
testImplementation "org.opensearch:opensearch:${opensearch_version}"
testImplementation "org.mockito:mockito-core:5.16.1"

//integration test framework:
integrationTestImplementation('com.carrotsearch.randomizedtesting:randomizedtesting-runner:2.8.2') {
exclude(group: 'junit', module: 'junit')
}
integrationTestImplementation 'junit:junit:4.13.2'
integrationTestImplementation("org.opensearch.plugin:reindex-client:${opensearch_version}"){
exclude(group: 'org.slf4j', module: 'slf4j-api')
}
integrationTestImplementation "org.opensearch.plugin:percolator-client:${opensearch_version}"
integrationTestImplementation 'commons-io:commons-io:2.18.0'
integrationTestImplementation "org.apache.logging.log4j:log4j-core:${versions.log4j}"
integrationTestImplementation "org.apache.logging.log4j:log4j-jul:${versions.log4j}"
integrationTestImplementation 'org.hamcrest:hamcrest:2.2'
integrationTestImplementation "org.bouncycastle:bcpkix-jdk18on:${versions.bouncycastle}"
integrationTestImplementation "org.bouncycastle:bcutil-jdk18on:${versions.bouncycastle}"
integrationTestImplementation('org.awaitility:awaitility:4.2.2') {
exclude(group: 'org.hamcrest', module: 'hamcrest')
}
integrationTestImplementation 'com.unboundid:unboundid-ldapsdk:4.0.14'
integrationTestImplementation "org.opensearch.plugin:mapper-size:${opensearch_version}"
integrationTestImplementation "org.apache.httpcomponents:httpclient-cache:4.5.14"
integrationTestImplementation "org.apache.httpcomponents:httpclient:4.5.14"
integrationTestImplementation "org.apache.httpcomponents:fluent-hc:4.5.14"
integrationTestImplementation "org.apache.httpcomponents:httpcore:4.4.16"
integrationTestImplementation "org.apache.httpcomponents:httpasyncclient:4.1.5"
integrationTestImplementation "org.mockito:mockito-core:5.16.1"
integrationTestImplementation "org.passay:passay:1.6.6"
integrationTestImplementation "org.opensearch:opensearch:${opensearch_version}"
integrationTestImplementation "org.opensearch.plugin:transport-netty4-client:${opensearch_version}"
integrationTestImplementation "org.opensearch.plugin:aggs-matrix-stats-client:${opensearch_version}"
integrationTestImplementation "org.opensearch.plugin:parent-join-client:${opensearch_version}"
integrationTestImplementation 'com.password4j:password4j:1.8.2'
integrationTestImplementation "com.google.guava:guava:${guava_version}"
integrationTestImplementation "org.apache.commons:commons-lang3:${versions.commonslang}"
integrationTestImplementation "com.fasterxml.jackson.core:jackson-databind:${versions.jackson_databind}"
integrationTestImplementation 'org.greenrobot:eventbus-java:3.3.1'
integrationTestImplementation('com.flipkart.zjsonpatch:zjsonpatch:0.4.16'){
exclude(group:'com.fasterxml.jackson.core')
}
integrationTestImplementation 'org.slf4j:slf4j-api:2.0.12'
integrationTestImplementation 'com.selectivem.collections:special-collections-complete:1.4.0'
integrationTestImplementation "org.opensearch.plugin:lang-painless:${opensearch_version}"
integrationTestImplementation project(path:":opensearch-resource-sharing-spi", configuration: 'shadow')
integrationTestImplementation project(path: ":${rootProject.name}-common", configuration: 'shadow')
integrationTestImplementation project(path: ":${rootProject.name}-client", configuration: 'shadow')
}
}

//create source set 'integrationTest'
//add classes from the main source set to the compilation and runtime classpaths of the integrationTest
sourceSets {
Expand All @@ -527,6 +594,9 @@ sourceSets {

//add new task that runs integration tests
task integrationTest(type: Test) {
filter {
excludeTestsMatching 'org.opensearch.sample.*Resource*'
}
doFirst {
// Only run resources tests on resource-test CI environments or locally
if (System.getenv('CI_ENVIRONMENT') != 'resource-test' && System.getenv('CI_ENVIRONMENT') != null) {
Expand Down Expand Up @@ -575,6 +645,7 @@ tasks.integrationTest.finalizedBy(jacocoTestReport) // report is always generate
check.dependsOn integrationTest

dependencies {
implementation project(path: ":${rootProject.name}-common", configuration: 'shadow')
implementation "org.opensearch.plugin:transport-netty4-client:${opensearch_version}"
implementation "org.opensearch.client:opensearch-rest-high-level-client:${opensearch_version}"
implementation "org.apache.httpcomponents.client5:httpclient5-cache:${versions.httpclient5}"
Expand Down Expand Up @@ -730,35 +801,12 @@ dependencies {

compileOnly "org.opensearch:opensearch:${opensearch_version}"

//integration test framework:
integrationTestImplementation('com.carrotsearch.randomizedtesting:randomizedtesting-runner:2.8.2') {
exclude(group: 'junit', module: 'junit')
}
integrationTestImplementation 'junit:junit:4.13.2'
integrationTestImplementation "org.opensearch.plugin:reindex-client:${opensearch_version}"
integrationTestImplementation "org.opensearch.plugin:percolator-client:${opensearch_version}"
integrationTestImplementation 'commons-io:commons-io:2.18.0'
integrationTestImplementation "org.apache.logging.log4j:log4j-core:${versions.log4j}"
integrationTestImplementation "org.apache.logging.log4j:log4j-jul:${versions.log4j}"
integrationTestImplementation 'org.hamcrest:hamcrest:2.2'
integrationTestImplementation "org.bouncycastle:bcpkix-jdk18on:${versions.bouncycastle}"
integrationTestImplementation "org.bouncycastle:bcutil-jdk18on:${versions.bouncycastle}"
integrationTestImplementation('org.awaitility:awaitility:4.3.0') {
exclude(group: 'org.hamcrest', module: 'hamcrest')
}
integrationTestImplementation 'com.unboundid:unboundid-ldapsdk:4.0.14'
integrationTestImplementation "org.opensearch.plugin:mapper-size:${opensearch_version}"
integrationTestImplementation "org.apache.httpcomponents:httpclient-cache:4.5.14"
integrationTestImplementation "org.apache.httpcomponents:httpclient:4.5.14"
integrationTestImplementation "org.apache.httpcomponents:fluent-hc:4.5.14"
integrationTestImplementation "org.apache.httpcomponents:httpcore:4.4.16"
integrationTestImplementation "org.apache.httpcomponents:httpasyncclient:4.1.5"
integrationTestImplementation "org.mockito:mockito-core:5.16.1"

//spotless
implementation('com.google.googlejavaformat:google-java-format:1.25.2') {
exclude group: 'com.google.guava'
}

testImplementation project(path: ":${rootProject.name}-common", configuration: 'shadow')
}

jar {
Expand Down Expand Up @@ -931,4 +979,4 @@ task updateVersion {
}
ant.replaceregexp(file:'build.gradle', match: '"opensearch.version", "\\d.*"', replace: '"opensearch.version", "' + newVersion.tokenize('-')[0] + '-SNAPSHOT"', flags:'g', byline:true)
}
}
}
Loading
Loading