Hi Jason,

Apologies for the late reply. My laptop was broken and I got it today from
service centre.

I am still having issues with solr-user able to view the Collections list
as follow.

Testing permissions for user [solr]
    Request [/admin/collections?action=LIST] returned status [200]
    Request [/collection1/select?q=*:*] returned status [200]
    Request [/collection2/select?q=*:*] returned status [200]
    Request [/collection3/select?q=*:*] returned status [200]

Testing permissions for user [solr-user]
    Request [/admin/collections?action=LIST] returned status [200]
    Request [/collection1/select?q=*:*] returned status [200]
    Request [/collection2/select?q=*:*] returned status [200]
    Request [/collection3/select?q=*:*] returned status [403]

I am still wondering wher I am going wrong.

Thanks,
Salmaan




On Thu, Aug 29, 2019 at 1:34 PM Salmaan Rashid Syed <
salmaan.ras...@mroads.com> wrote:

> Thanks a lot Jason,
>
> I will try this out and let you know.
>
> Thanks again.
>
> On Wed 28 Aug, 2019, 7:45 PM Jason Gerlowski, <gerlowsk...@gmail.com>
> wrote:
>
>> Hi Salmaan,
>>
>> Are you still seeing this behavior, or were you able to figure things out?
>>
>> I just got a chance to try out the security.json in Solr 7.6 myself,
>> and I can't reproduce the behavior you're seeing.
>>
>> It might be helpful to level set here.  Make sure that our
>> security.json settings and our test requests are exactly the same.
>>
>> This is the security.json I used in my test deployment:
>>
>> {
>>   "authentication":{
>>    "blockUnknown": true,
>>    "class":"solr.BasicAuthPlugin",
>>    "credentials":{
>>      "solr":"gP31s0FQevh3k0i0y6g9AP/TZLWctxfZjtC9sOh8vZU=
>> J7an406gVyx4v4CkR8YLgmhClk9Yv/fIBSfZoi1f0kY=",
>>      "solr-user":"gP31s0FQevh3k0i0y6g9AP/TZLWctxfZjtC9sOh8vZU=
>> J7an406gVyx4v4CkR8YLgmhClk9Yv/fIBSfZoi1f0kY="
>>    }
>>   },
>>   "authorization":{
>>    "class":"solr.RuleBasedAuthorizationPlugin",
>>    "permissions":[
>>       {"name": "dev-read", "collection": ["collection1",
>> "collection2"], "role": ["dev", "admin"] },
>>       {"name": "security-edit", "role": "admin"},
>>       {"name": "security-read", "role": "admin"},
>>       {"name": "schema-edit", "role": "admin"},
>>       {"name": "schema-read", "role": "admin"},
>>       {"name": "config-edit", "role": "admin"},
>>       {"name": "config-read", "role": "admin"},
>>       {"name": "core-admin-edit", "role": "admin"},
>>       {"name": "core-admin-read", "role": "admin"},
>>       {"name": "collection-api-edit", "role": "admin"},
>>       {"name": "collection-api-read", "role": "admin"},
>>       {"name": "read", "role": "admin"},
>>       {"name": "update", "role": "admin"},
>>       {"name": "all", "role": "admin"}
>>    ],
>>    "user-role":{
>>      "solr":"admin",
>>      "solr-user": "dev"
>>    }
>>   }
>> }
>>
>> And this is the output of a script I use to test permissions quickly:
>>
>> $ ./test-security.sh
>>
>> Testing permissions for user [solr]
>>     Request [/admin/collections?action=LIST] returned status [200]
>>     Request [/collection1/select?q=*:*] returned status [200]
>>     Request [/collection2/select?q=*:*] returned status [200]
>>     Request [/collection3/select?q=*:*] returned status [200]
>>
>> Testing permissions for user [solr-user]
>>     Request [/admin/collections?action=LIST] returned status [403]
>>     Request [/collection1/select?q=*:*] returned status [200]
>>     Request [/collection2/select?q=*:*] returned status [200]
>>     Request [/collection3/select?q=*:*] returned status [403]
>>
>> You can find this script here, to see the exact curl commands being
>> used and run it yourself: https://paste.apache.org/tjtdg
>>
>> That output looks correct to me.  solr-user is prevented from
>> accessing other APIs and other collections, but can access collection1
>> and collection2.
>>
>> Does your security.json match mine, or do the permissions differ in
>> some way?  Can you still reproduce the behavior using my script?
>>
>> Good luck,
>>
>> Jason
>>
>> On Thu, Aug 22, 2019 at 2:13 AM Salmaan Rashid Syed
>> <salmaan.ras...@mroads.com> wrote:
>> >
>> > Hi,
>> >
>> > Any suggestions as to what can be done?
>> >
>> > Regards,
>> > Salmaan
>> >
>> >
>> > On Wed, Aug 21, 2019 at 4:33 PM Jason Gerlowski <gerlowsk...@gmail.com>
>> > wrote:
>> >
>> > > Ah, ok.  SOLR-13355 still affects 7.6, so that explains why you're
>> > > seeing this behavior.
>> > >
>> > > You could upgrade to get the new behavior, but you don't need to-
>> > > there's a workaround.  You just need to add a few extra rules to your
>> > > security.json.  The problem in SOLR-13355 is that the "all" permission
>> > > isn't being considered for APIs that are covered by other predefined
>> > > permissions.  So the workaround is to add a permission rule for each
>> > > of the predefined permissions, locking them down to the "admin" role.
>> > > It really bloats security.json, but should do the job.  So your
>> > > security.json should have a permissions section that looks like the
>> > > JSON below:
>> > >
>> > > {"name": "dev-read", "collection": ["collection1", "collection2"],
>> > > "role": "dev"},
>> > > {"name": "security-edit", "role": "admin"},
>> > > {"name": "security-read", "role": "admin"},
>> > > {"name": "schema-edit", "role": "admin"},
>> > > {"name": "schema-read", "role": "admin"},
>> > > {"name": "config-edit", "role": "admin"},
>> > > {"name": "config-read", "role": "admin"},
>> > > {"name": "core-admin-edit", "role": "admin"},
>> > > {"name": "core-admin-read", "role": "admin"},
>> > > {"name": "collection-api-edit", "role": "admin"},
>> > > {"name": "collection-api-read", "role": "admin"},
>> > > {"name": "read", "role": "admin"},
>> > > {"name": "update", "role": "admin"},
>> > > {"name": "all", "role": "admin"}
>> > >
>> > > Hope that helps.  Let me know if that still has any problems for you.
>> > >
>> > > Jason
>> > >
>> > > On Wed, Aug 21, 2019 at 6:48 AM Salmaan Rashid Syed
>> > > <salmaan.ras...@mroads.com> wrote:
>> > > >
>> > > > Hi Jason,
>> > > >
>> > > > Is there a way to fix this in version 7.6?
>> > > >
>> > > > Or is it mandatory to upgrade to other versions?
>> > > >
>> > > > If I have to upgrade to a higher version, then what is the best way
>> to do
>> > > > this without effecting the current configuration and indexed data?
>> > > >
>> > > > Thanks,
>> > > > Salmaan
>> > > >
>> > > >
>> > > >
>> > > > On Wed, Aug 21, 2019 at 4:13 PM Salmaan Rashid Syed <
>> > > > salmaan.ras...@mroads.com> wrote:
>> > > >
>> > > > > Hi Jason,
>> > > > >
>> > > > > I am using version 7.6 of Solr.
>> > > > >
>> > > > > Thanks,
>> > > > > Salmaan
>> > > > >
>> > > > >
>> > > > >
>> > > > > On Wed, Aug 21, 2019 at 4:12 PM Jason Gerlowski <
>> gerlowsk...@gmail.com
>> > > >
>> > > > > wrote:
>> > > > >
>> > > > >> The "all" permissions _should_ block solr-user from accessing
>> all of
>> > > > >> those resources, and I believe it does in newer versions of Solr.
>> > > > >> There was a bug with it that was fixed a few versions back
>> though- it
>> > > > >> sounds like you might be running into that. (see
>> > > > >> https://issues.apache.org/jira/browse/SOLR-13355) What version
>> of
>> > > Solr
>> > > > >> are you using?
>> > > > >>
>> > > > >> Jason
>> > > > >>
>> > > > >>
>> > > > >>
>> > > > >> On Wed, Aug 21, 2019 at 5:21 AM Salmaan Rashid Syed
>> > > > >> <salmaan.ras...@mroads.com> wrote:
>> > > > >> >
>> > > > >> > Hi Jason,
>> > > > >> >
>> > > > >> > Thanks for your prompt reply.
>> > > > >> >
>> > > > >> > Your code does address few of my concerns like restricting
>> > > *solr-user*
>> > > > >> from
>> > > > >> > accessing the dashboard and from executing other request
>> methods
>> > > apart
>> > > > >> from
>> > > > >> > *"update"* and *"read"*.
>> > > > >> >
>> > > > >> > But I am still able to access other collections such as
>> > > *"Collection3",
>> > > > >> > "Collection4"* and so on, apart from the intended two
>> collection
>> > > > >> entered in
>> > > > >> > the code. I can give *"update"* and *"read" *requests to these
>> > > external
>> > > > >> > Collections which solr-user should not be able to do.
>> > > > >> >
>> > > > >> > Moreover solr-user can look at the
>> > > > >> > *http://localhost:8983/solr/admin/authentication
>> > > > >> > <http://localhost:8983/solr/admin/authentication>* link which
>> > > lists the
>> > > > >> > users and their *SHA256* coded passwords. How can I hide this
>> and
>> > > > >> restrict
>> > > > >> > access to other collections?
>> > > > >> >
>> > > > >> > Thanks and regards
>> > > > >> > Salmaan
>> > > > >> >
>> > > > >> >
>> > > > >> > On Wed, Aug 21, 2019 at 5:07 AM Jason Gerlowski <
>> > > gerlowsk...@gmail.com>
>> > > > >> > wrote:
>> > > > >> >
>> > > > >> > > Hi Salmaan,
>> > > > >> > >
>> > > > >> > > Solr's RuleBasedAuthorizationPlugin allows requests through
>> if
>> > > none of
>> > > > >> > > the specified permissions apply.  I think that's what you're
>> > > running
>> > > > >> > > into in your example above.  If you want to lockdown a
>> particular
>> > > API
>> > > > >> > > (or set of APIs) then you need to explicitly add a
>> permission that
>> > > > >> > > restricts those APIs to a particular role.
>> > > > >> > >
>> > > > >> > > One way to get the behavior that it sounds like you're
>> looking for
>> > > > >> > > would be to add a catch-all permission at the bottom of your
>> > > > >> > > permissions list that restricts all other APIs to "admin".
>> This
>> > > would
>> > > > >> > > look a bit like:
>> > > > >> > >
>> > > > >> > >  "permissions":[
>> > > > >> > >     {
>> > > > >> > >         "name":"security-edit",
>> > > > >> > >         "role":"admin"
>> > > > >> > >     },
>> > > > >> > >     {
>> > > > >> > >         "collection": ["Collection1", "Collection2"],
>> > > > >> > >         "name": ["update", "read"],
>> > > > >> > >         "role": "dev"
>> > > > >> > >     },
>> > > > >> > >     {
>> > > > >> > >         "name": "all",
>> > > > >> > >         "role": "admin"
>> > > > >> > >     }
>> > > > >> > > ]
>> > > > >> > >
>> > > > >> > > Hope that helps get you started.
>> > > > >> > >
>> > > > >> > > Best,
>> > > > >> > >
>> > > > >> > > Jason
>> > > > >> > >
>> > > > >> > > On Tue, Aug 20, 2019 at 3:19 AM Salmaan Rashid Syed
>> > > > >> > > <salmaan.ras...@mroads.com> wrote:
>> > > > >> > > >
>> > > > >> > > > Hi Solr Users,
>> > > > >> > > >
>> > > > >> > > > I want to create a user that has restricted access to
>> Solr. I
>> > > did
>> > > > >> the
>> > > > >> > > > follwowing:-
>> > > > >> > > >
>> > > > >> > > >
>> > > > >> > > >    1. {
>> > > > >> > > >    2. "authentication":{
>> > > > >> > > >    3.    "blockUnknown": true,
>> > > > >> > > >    4.    "class":"solr.BasicAuthPlugin",
>> > > > >> > > >    5.    "credentials":{
>> > > > >> > > >    6. "solr-admin":
>> > > > >> > > >    "2IUJD9dxRhxSXaJGdMP5z8ggSn4I285Ty9GCWeRNMUg=
>> > > > >> > > > /sSNJJufPtj4baRizoJshJawFsWvopvZSqZpQ/Nwd78="
>> > > > >> > > >    ,
>> > > > >> > > >    7. "solr-user":
>> > > > >> > > >    "p+XwOh15p/rvFltv2LXP1CwtbvwBgGlC9qcDKxV73B4=
>> > > > >> > > > DcNsjfA6Wf16V1XKT+YraosSFQ5Cr3eRUX6BQnx9XKA="
>> > > > >> > > >
>> > > > >> > > >    8.                  }
>> > > > >> > > >    9. },
>> > > > >> > > >    10. "authorization":{
>> > > > >> > > >    11.    "class":"solr.RuleBasedAuthorizationPlugin",
>> > > > >> > > >    12.    "user-role":{"solr-admin":"admin",
>> "solr-user":"dev"},
>> > > > >> > > >    13.    "permissions":[
>> > > > >> > > >    14.       {
>> > > > >> > > >    15.        "name":"security-edit",
>> > > > >> > > >    16.        "role":"admin"
>> > > > >> > > >    17.       },
>> > > > >> > > >    18.       {
>> > > > >> > > >    19.         "collection": ["Collection1",
>> "Collection2"],
>> > > > >> > > >    20.         "name": ["update", "read"],
>> > > > >> > > >    21.         "role": "dev"
>> > > > >> > > >    22.       }
>> > > > >> > > >    23.       ]
>> > > > >> > > >    24. }}
>> > > > >> > > >
>> > > > >> > > >
>> > > > >> > > > But when Login intot the Solr admin dash-board using
>> Solr-user
>> > > > >> > > credentials,
>> > > > >> > > > I can read, select, write, update, delete collections and
>> do all
>> > > > >> sorts of
>> > > > >> > > > things like a solr-admin can do.
>> > > > >> > > >
>> > > > >> > > > I want solr-user to be able to access only *Collection1*
>> and
>> > > > >> > > *Collection2*
>> > > > >> > > > and be able to only *update *and *read*. He should not be
>> able
>> > > to
>> > > > >> access
>> > > > >> > > > other collections and do anything apart from the above
>> mentioned
>> > > > >> role.
>> > > > >> > > >
>> > > > >> > > > Where am I exactly going wrong?
>> > > > >> > > >
>> > > > >> > > > Thanks and Regards,
>> > > > >> > > > Salmaan
>> > > > >> > >
>> > > > >>
>> > > > >
>> > >
>>
>

Reply via email to