mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-06 13:08:29 +00:00
f2cbe20ea0
This is related to elastic/x-pack-elasticsearch#1217. This PR removes the default password of "changeme" from the reserved users. This PR adds special behavior for authenticating the reserved users. No ReservedRealm user can be authenticated until its password is set. The one exception to this is the elastic user. The elastic user can be authenticated with an empty password if the action is a rest request originating from localhost. In this scenario where an elastic user is authenticated with a default password, it will have metadata indicating that it is in setup mode. An elastic user in setup mode is only authorized to execute a change password request. Original commit: elastic/x-pack-elasticsearch@e1e101a237
95 lines
4.4 KiB
Groovy
95 lines
4.4 KiB
Groovy
import org.elasticsearch.gradle.test.ClusterConfiguration
|
|
import org.elasticsearch.gradle.test.ClusterFormationTasks
|
|
import org.elasticsearch.gradle.test.NodeInfo
|
|
|
|
apply plugin: 'elasticsearch.standalone-rest-test'
|
|
apply plugin: 'elasticsearch.rest-test'
|
|
|
|
dependencies {
|
|
testCompile project(path: ':x-pack-elasticsearch:plugin', configuration: 'runtime')
|
|
testCompile project(path: ':x-pack-elasticsearch:plugin', configuration: 'testArtifacts')
|
|
testCompile project(path: ':modules:analysis-common', configuration: 'runtime')
|
|
}
|
|
|
|
task setupClusterOne {}
|
|
ClusterConfiguration configOne = new ClusterConfiguration(project)
|
|
configOne.clusterName = 'cluster1'
|
|
configOne.setting('node.name', 'cluster1-node1')
|
|
configOne.setting('xpack.monitoring.enabled', false)
|
|
configOne.setting('xpack.ml.enabled', false)
|
|
configOne.plugin(':x-pack-elasticsearch:plugin')
|
|
configOne.module(project.project(':modules:analysis-common'))
|
|
configOne.setupCommand('setupDummyUser',
|
|
'bin/x-pack/users', 'useradd', 'test_user', '-p', 'x-pack-test-password', '-r', 'superuser')
|
|
configOne.waitCondition = { node, ant ->
|
|
File tmpFile = new File(node.cwd, 'wait.success')
|
|
ant.get(src: "http://${node.httpUri()}/_cluster/health?wait_for_nodes=>=1&wait_for_status=yellow",
|
|
dest: tmpFile.toString(),
|
|
username: 'test_user',
|
|
password: 'x-pack-test-password',
|
|
ignoreerrors: true,
|
|
retries: 10)
|
|
return tmpFile.exists()
|
|
}
|
|
List<NodeInfo> cluster1Nodes = ClusterFormationTasks.setup(project, 'clusterOne', setupClusterOne, configOne)
|
|
|
|
task setupClusterTwo {}
|
|
ClusterConfiguration configTwo = new ClusterConfiguration(project)
|
|
configTwo.clusterName = 'cluster2'
|
|
configTwo.setting('node.name', 'cluster2-node1')
|
|
configTwo.setting('xpack.monitoring.enabled', false)
|
|
configTwo.setting('xpack.ml.enabled', false)
|
|
configTwo.plugin(':x-pack-elasticsearch:plugin')
|
|
configTwo.module(project.project(':modules:analysis-common'))
|
|
configTwo.setupCommand('setupDummyUser',
|
|
'bin/x-pack/users', 'useradd', 'test_user', '-p', 'x-pack-test-password', '-r', 'superuser')
|
|
configTwo.waitCondition = { node, ant ->
|
|
File tmpFile = new File(node.cwd, 'wait.success')
|
|
ant.get(src: "http://${node.httpUri()}/_cluster/health?wait_for_nodes=>=1&wait_for_status=yellow",
|
|
dest: tmpFile.toString(),
|
|
username: 'test_user',
|
|
password: 'x-pack-test-password',
|
|
ignoreerrors: true,
|
|
retries: 10)
|
|
return tmpFile.exists()
|
|
}
|
|
List<NodeInfo> cluster2Nodes = ClusterFormationTasks.setup(project, 'clusterTwo', setupClusterTwo, configTwo)
|
|
|
|
integTestCluster {
|
|
dependsOn setupClusterOne, setupClusterTwo
|
|
plugin ':x-pack-elasticsearch:plugin'
|
|
setupCommand 'setupDummyUser',
|
|
'bin/x-pack/users', 'useradd', 'test_user', '-p', 'x-pack-test-password', '-r', 'superuser'
|
|
setting 'xpack.monitoring.enabled', false
|
|
setting 'xpack.ml.enabled', false
|
|
setting 'node.name', 'tribe-node'
|
|
setting 'tribe.on_conflict', 'prefer_cluster1'
|
|
setting 'tribe.cluster1.cluster.name', 'cluster1'
|
|
setting 'tribe.cluster1.discovery.zen.ping.unicast.hosts', "'${-> cluster1Nodes.get(0).transportUri()}'"
|
|
setting 'tribe.cluster1.http.enabled', 'true'
|
|
setting 'tribe.cluster1.xpack.ml.enabled', 'false'
|
|
setting 'tribe.cluster2.cluster.name', 'cluster2'
|
|
setting 'tribe.cluster2.discovery.zen.ping.unicast.hosts', "'${-> cluster2Nodes.get(0).transportUri()}'"
|
|
setting 'tribe.cluster2.http.enabled', 'true'
|
|
setting 'tribe.cluster2.xpack.ml.enabled', 'false'
|
|
waitCondition = { node, ant ->
|
|
File tmpFile = new File(node.cwd, 'wait.success')
|
|
// 5 nodes: tribe + clusterOne (1 node + tribe internal node) + clusterTwo (1 node + tribe internal node)
|
|
ant.get(src: "http://${node.httpUri()}/_cluster/health?wait_for_nodes=>=5&wait_for_status=yellow",
|
|
dest: tmpFile.toString(),
|
|
username: 'test_user',
|
|
password: 'x-pack-test-password',
|
|
ignoreerrors: true,
|
|
retries: 10)
|
|
return tmpFile.exists()
|
|
}
|
|
}
|
|
|
|
integTestRunner {
|
|
systemProperty 'tests.cluster', "${-> cluster1Nodes.get(0).transportUri()}"
|
|
systemProperty 'tests.cluster2', "${-> cluster2Nodes.get(0).transportUri()}"
|
|
systemProperty 'tests.tribe', "${-> integTest.nodes.get(0).transportUri()}"
|
|
finalizedBy 'clusterOne#stop'
|
|
finalizedBy 'clusterTwo#stop'
|
|
}
|