Sha256: 903c6739f93648fe0fae5a9061683d94ed612a408c429a8dafa40632a9bc28f7

Contents?: true

Size: 1.78 KB

Versions: 47

Compression:

Stored size: 1.78 KB

Contents

require 'yaml'

module Configs
  class << self; attr_accessor :managed_policies, :all end
  script_dir  = File.expand_path File.dirname(__FILE__)
  @managed_policies = YAML.load(File.read("#{script_dir}/config/managed_policies.yml"))
  @all = Hash.new.tap { |h| Dir['config/*.yml'].each { |yml| h.merge!(YAML.load(File.open(yml))) }}
  # Override with ciinabox configs
  ciinaboxes_dir = ENV['CIINABOXES_DIR'] || 'ciinaboxes'
  ciinabox_name = ENV['CIINABOX'] || ''
  (Dir["#{ciinaboxes_dir}/#{ciinabox_name}/config/*.yml"]).each { |yml|
      @all.merge!(YAML.load(File.open(yml)))
  }
end

class Policies

  def initialize
    @policy_array = Array.new
    @config = Configs.all
    @policies = (@config.key?('custom_policies') ? Configs.managed_policies.merge(@config['custom_policies']) : Configs.managed_policies)
  end

  def get_policies(group = nil)
    create_policies(@config['default_policies']) if @config.key?('default_policies')
    create_policies(@config['group_policies'][group]) unless group.nil?
    return @policy_array
  end

  def create_policies(policies)
    policies.each do |policy|
      raise "ERROR: #{policy} policy doesn't exist in the managed policies or as a custom policy" unless @policies.key?(policy)
      resource = (@policies[policy].key?('resource') ? gsub_yml(@policies[policy]['resource']) : ["*"])
      @policy_array << { PolicyName: policy, PolicyDocument: { Statement: [ { Effect:"Allow", Action: @policies[policy]['action'], Resource: resource }]} }
    end
    return @policy_array
  end

  # replaces %{variables} in the yml
  def gsub_yml(resource)
    replaced = []
    resource.each { |r|
      if r.is_a? String
        replaced << r.gsub('%{source_bucket}', @config['source_bucket'])
      else
        replaced << r
      end
    }

    return replaced
  end

end

Version data entries

47 entries across 47 versions & 1 rubygems

Version Path
ciinabox-ecs-0.4.2 ext/policies.rb
ciinabox-ecs-0.4.1 ext/policies.rb
ciinabox-ecs-0.3.2 ext/policies.rb
ciinabox-ecs-0.3.2.alpha.1622701697 ext/policies.rb
ciinabox-ecs-0.3.1.alpha.1622698898 ext/policies.rb
ciinabox-ecs-0.3.1.alpha.1622695860 ext/policies.rb
ciinabox-ecs-0.3.1 ext/policies.rb
ciinabox-ecs-0.3.1.alpha.1617687041 ext/policies.rb
ciinabox-ecs-0.3.0.alpha.1617686815 ext/policies.rb
ciinabox-ecs-0.3.0 ext/policies.rb
ciinabox-ecs-0.3.0.alpha.1612412532 ext/policies.rb
ciinabox-ecs-0.3.0.alpha.1612411765 ext/policies.rb
ciinabox-ecs-0.3.0.alpha.1612323213 ext/policies.rb
ciinabox-ecs-0.2.17.alpha.1612322070 ext/policies.rb
ciinabox-ecs-0.2.17.alpha.1608078804 ext/policies.rb
ciinabox-ecs-0.2.17 ext/policies.rb
ciinabox-ecs-0.2.16 ext/policies.rb
ciinabox-ecs-0.2.15.alpha.1565746583 ext/policies.rb
ciinabox-ecs-0.2.15 ext/policies.rb
ciinabox-ecs-0.2.14.alpha.1565134498 ext/policies.rb