Browse Source

Added support for rules that target containerUri (#82)

master
David Stern 5 years ago
committed by GitHub
parent
commit
08af25b679
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 37
      getruleid.py

37
getruleid.py

@ -7,14 +7,17 @@
# getruleid pass in a uri and identity and return the rule id # getruleid pass in a uri and identity and return the rule id
# for example # for example
# getruleid.py -u /SASVisualAnalytics/** -p "authenticatedUsers" # getruleid.py -u /SASVisualAnalytics/** -p "authenticatedUsers"
# or
# getruleid.py -c /folders/folders/dba5473d-afb4-44d4-866a-9671ed5878c2 -p "authenticatedusers"
# #
# Change History # Change History
# #
# 27JAN2017 Comments added # 27JAN2017 Comments added
# 18JUN2018 Output JSON # 18JUN2018 Output JSON
# 20Feb2020 make identity a required parameter # 20Feb2020 make identity a required parameter
# 14Jul2021 Support getting rules that target container URIs
# #
# Copyright © 2018, SAS Institute Inc., Cary, NC, USA. All Rights Reserved. # Copyright © 2018-2021, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.
# #
# Licensed under the Apache License, Version 2.0 (the License); # Licensed under the Apache License, Version 2.0 (the License);
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -30,27 +33,53 @@
# #
import argparse import argparse
import sys
from sharedfunctions import callrestapi, printresult from sharedfunctions import callrestapi, printresult
debug=False
# Define exception handler so that we only output trace info from errors when in debug mode
def exception_handler(exception_type, exception, traceback, debug_hook=sys.excepthook):
if debug:
debug_hook(exception_type, exception, traceback)
else:
print "%s: %s" % (exception_type.__name__, exception)
sys.excepthook = exception_handler
# setup command-line arguements # setup command-line arguements
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument("-u","--objecturi", help="Enter the objecturi.",required='True') parser.add_argument("-u","--objecturi", help="objectURI. You must specify either -u objectURI or -c containerURI.")
parser.add_argument("-c","--containeruri", help="containerURI. You must specify either -u objectURI or -c containerURI.")
parser.add_argument("-p","--principal", help="Enter the identity name or authenticatedUsers, everyone or guest",required='True') parser.add_argument("-p","--principal", help="Enter the identity name or authenticatedUsers, everyone or guest",required='True')
parser.add_argument("-o","--output", help="Output Style", choices=['csv','json','simple','simplejson'],default='json') parser.add_argument("-o","--output", help="Output Style", choices=['csv','json','simple','simplejson'],default='json')
args = parser.parse_args() args = parser.parse_args()
objuri=args.objecturi objuri=args.objecturi
conturi=args.containeruri
ident=args.principal ident=args.principal
output_style=args.output output_style=args.output
if objuri and conturi:
raise Exception('You must specify either -u objectURI or -c containerURI, but not both.')
if objuri is None and conturi is None:
raise Exception('You must specify either -u objectURI or -c containerURI. You may not specify both.')
if ident.lower()=='authenticatedusers': ident='authenticatedUsers' if ident.lower()=='authenticatedusers': ident='authenticatedUsers'
if ident=='guest' or ident=='everyone' or ident=='authenticatedUsers': if ident=='guest' or ident=='everyone' or ident=='authenticatedUsers':
reqval= "/authorization/rules?filter=and(eq(principalType,'"+ident+"'),eq(objectUri,'"+objuri+"'))" if objuri:
reqval= "/authorization/rules?filter=and(eq(principalType,'"+ident+"'),eq(objectUri,'"+objuri+"'))"
else:
reqval= "/authorization/rules?filter=and(eq(principalType,'"+ident+"'),eq(containerUri,'"+conturi+"'))"
else: else:
reqval= "/authorization/rules?filter=and(eq(principal,'"+ident+"'),eq(objectUri,'"+objuri+"'))" if objuri:
reqval= "/authorization/rules?filter=and(eq(principal,'"+ident+"'),eq(objectUri,'"+objuri+"'))"
else:
reqval= "/authorization/rules?filter=and(eq(principal,'"+ident+"'),eq(containerUri,'"+conturi+"'))"
reqtype='get' reqtype='get'

Loading…
Cancel
Save