Skip to Main Content

Security Software

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Proxy Server Configuration with Subtrees in Different Data Stores

user462194Dec 8 2010 — edited Dec 9 2010
Hello,

We've run Sun DS v5.2 for a number of years and have nearly completed upgrading to [O]DSEE 6.3.1/7.0/11.1 with Directory Proxy Server (DPS) fronting the setup.

Our DPS is set up based on the documentation example using inferior/superior subtrees served from different data sources. It "mostly" works, but a few issues remain to be ironed out. I've been working on these for some weeks using various data view configurations, connection handlers, etc--but to no avail--and and I'm starting to run out of ideas.

The data and servers are divided into two major groups: a set of top-level systems presenting (example) naming context dc=a and another group serving subtree dc=b,dc=a. The split tree configuration is primarily for data and security partitioning.

I would like to present data from a common group of DPS instances while maintaining data partitioning between dc=a and dc=b,dc=a pools, and without resorting to a second set of proxies on a separate IP address. One requirement is to disallow subtree queries starting at dc=a (a common use case) from descending into dc=b,dc=a to avoid unnecessary load on subtree back ends, i.e. use excluded-subtrees.

A summary of the current configuration. Problems and questions below.

-----
dpconf set-server-prop ... data-view-automatic-routing-mode:limited

# dc=a : 'root data view' : defaultDataSourcePool
dpconf create-ldap-data-source dsA1 host1.mydomain:1389
...
dpconf attach-ldap-data-source defaultDataSourcePool dsA1 dsA2 ...
dpconf set-attached-ldap-data-source-prop defaultDataSourcePool dsA1 ...
dpconf set-ldap-data-view-prop 'root data view' \
excluded-subtrees:'""' \
excluded-subtrees:cn=config \
excluded-subtrees:cn=monitor \
excluded-subtrees:'cn=proxy manager' \
excluded-subtrees:dc=b,dc=a

# dc=b,dc=a : view-b : pool-b
dpconf create-ldap-data-source dsB1 hostX.mydomain:1389
...
dpconf create-ldap-data-source-pool pool-b
dpconf set-ldap-data-source-pool-prop pool-b \
enable-client-affinity:true \
client-affinity-policy:read-affinity-after-write
dpconf attach-ldap-data-source pool-b dsB1 dsB2 ...
dpconf set-attached-ldap-data-source-prop pool-b dsB1 ...
...

dpconf create-ldap-data-view view-b pool-b dc=b,dc=a
dpconf set-ldap-data-view-prop view-b excluded-subtrees:'""'
...
-----

Problem: On occasion a client bound to dc=b,dc=a will try to fetch the schema ( cn=schema ). With configuration above, the request is routed to top-level pool behind root data view. Because the client's dc=b,dc=a credentials do not exist on the top-level servers, so an error is thrown.

I've tried routing connections bound to dc=b,dc=a using a connection handler, but it doesn't seem to work properly (can't recall the exact problem now), e.g.

-----
dpconf create-connection-handler handler-b
dpconf set-connection-handler-prop handler-b \
bind-dn-filters:"(.*),dc=b,dc=a" \
data-view-routing-custom-list:view-b \
data-view-routing-policy:custom \
enable-data-view-affinity:true \
is-enabled:true ...
-----

I have not configured proxy authorization because it looks to require cross server pool accounts i.e. I'd have to create dc=b,dc=a accounts in the dc=a suffix.

I haven't configured pass-through authentication, as versions of the docs over time seem to have began to discourage its use.

Questions:

I'd like to route all requests bound to dc=b,dc=a to that pool, including queries to rootDSE ("") and cn=schema, i.e. I'd like the view(s) able to serve all three search bases.

I'd like to route all requests bound to dc=a to that pool, including queries to rootDSE ("") and cn=schema.

Anonymous connections can be routed normally: requests to dc=a go to that view, requests to dc=b,dc=a to that view and, say, anonymous requests on rootDSE ("") and cn=schema default to the top-level servers ( dc=a ).

I'd like namingContexts to contain dc=a and possibly (don't care) dc=b=dc=a. I do not want to present rootDSE ("") and cn=schema in namingContexts (I've observed this in some configurations).

Lastly, I'd like to find a configuration that requires (simple) bind to be done over a secure connection (SSL, TLS). I've seen a new ACI for a recent version of DS that would help, but we still have a few DS 5.2 servers in the replication topology, and I don't want to break those. One idea might be to write a connection handler that sends bound connections done over SSL/TLS ( is-ssl-mandatory ) to the proper view, with a subsequent handler that sends bound (i.e. insecure) connections to an empty data view.

How might I accomplish this? I've tried quite a few variations and this post is pretty long, does it make sense to break up the questions?

Thank you!
Tom.
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details