arver 0.0.5 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/CHANGELOG.textile CHANGED
@@ -1,4 +1,9 @@
1
- === 0.0.4 2012-04-30
1
+ === 0.1.0 2012-04-30
2
+
3
+ * Fixed documentation
4
+ * Let's call this a release!
5
+
6
+ === 0.0.5 2012-04-30
2
7
 
3
8
  * Updated to run with ruby 1.9
4
9
  * Validate gpg fingerprints
data/README.textile CHANGED
@@ -1,53 +1,73 @@
1
1
  h1. arver
2
2
 
3
- * https://git.codecoop.org/projects/arver
4
-
5
- h2. DESCRIPTION:
3
+ h2. Synopsis
6
4
 
7
5
  arver is a tool to manage encrypted harddisks.
8
6
 
9
- Imagine you are a collective with several admin members. Your servers have
10
- diffrent LUKS encrypted devices.
11
-
12
- Either you would need 1 password for every device which everyone needs to know
13
- or you use arver! Arver has 1 password for each device and for each member. This
14
- password is stored encrypted with the personal gpg-key in the data directory.
15
- The admins only need to know the password to the their own gpg secret key.
16
-
17
- This has the following advantages:
18
-
19
- * No need to share passwords or password patterns
20
- ** Often people share passwords amongst each another. This has the drawback that
21
- in case of an emergency every password needs to be changed. Which means that
22
- everyone else needs to learn a bunch of new passwords and changing these
23
- passwords is also quite cumbersome and time consuming.
24
- ** As the amount of passwords might grow with your disks and hosts you will start
25
- using a password pattern to derive passwords for each disk from that pattern.
26
- This has the drawback that you can hardly share only partial access to disks
27
- with a certain admin, as if she knows the pattern she will also likely have
28
- access to every other disk. Furthermore, if once one password is leaked and
29
- the patter is easily visible, all the other passwords are also compromised.
30
- * Managing your encrypted harddisks is scriptable, which means that you can
31
- recover much faster from outages
32
- * Revoking access for an admin is scriptable and therefore done in one call and
33
- also much safer than revoking manually for each disk.
34
- * Finer grained access. As for each user and each disk there will be a seperate
35
- password by design. You can also grant access to certain disks also only
36
- selectively. So for example new admins in your group can only open the disks
37
- for your most important services or for which they are respnsible, while access
38
- to the other disks is restriced to other admins.
7
+ It is tailored for fine-grained access control to LUKS encrypted harddisks by
8
+ many users. Additionally it supports automation through scripts and facilitates
9
+ key distribution.
10
+
11
+ As an example it can be used in an organisation to grant access to encrypted
12
+ partitions to a team of admins.
13
+
14
+ h2. Addressed Problems
15
+
16
+ In a traditional setup with multiple LUKS devices most organisations resort
17
+ to password sharing. This has multiple drawbacks, which arver tries to address:
18
+
19
+ * In case of an emergency or scheduled password change, everyone needs to learn
20
+ a bunch of new passwords and changing them is cumbersome and time consuming.
21
+ * If the password is leaked, all disks are compromised.
22
+ * As the amount of passwords grows with the number of disks, password patterns
23
+ are common. This has the drawback that you can't grant per-disk access to others.
24
+
25
+ Further arver can ease many associated tasks:
26
+
27
+ * Arver is scriptable - all actions support script hooks, which means that you can
28
+ recover much faster from outages.
29
+ * Revoking all access for an admin can be done with only one command.
30
+ * Since arver keys are encrypted using publickey cryptography it is very easy to
31
+ safely distribute arver keys.
39
32
 
40
33
  h1. Usage
41
34
 
42
35
  arver ships with a detailed man page, describing the usage in detail.
43
36
 
37
+ h1. Installation
38
+
39
+ The easiest way to install arver is by gem
40
+
41
+ sudo gem install arver
42
+
43
+ This will install all required dependecies automatically. If your distributions
44
+ contains an arver package we recommend installation by your package manager.
45
+
46
+ The following ruby gems are required for arver:
47
+
48
+ * gpgme 2
49
+ * activesupport 2
50
+ * escape
51
+
52
+ For development you will need the following additional gems:
53
+
54
+ * rake
55
+ * cucumber
56
+ * rspec
57
+
58
+ h1. Requirements
59
+
60
+ arver only works with cryptsetup-luks >= 1.0.5 as previous versions do not
61
+ support key slots properly for our usage.
62
+
44
63
  h1. Limitations
45
64
 
65
+ * arver only supports LUKS as backend.
46
66
  * arver supports only up to 8 users as LUKS has only 8 key slots (LUKS NUMKEYS).
47
67
 
48
- h1. Known Issues
68
+ h2. Known Issues
49
69
 
50
- h2. GPGME and gpg-agent
70
+ h3. GPGME and gpg-agent
51
71
 
52
72
  If arver asks you multiple times for the password, you might consider to use
53
73
  gpg-agent, so you can decrypt your keypair once and the use it for all your
@@ -68,31 +88,6 @@ script. An option is to add the following entry to your .bashrc
68
88
  export GPG_AGENT_INFO
69
89
  fi
70
90
 
71
- h1. Requirements
72
-
73
- arver only works with cryptsetup-luks >= 1.0.5 as previous versions do not
74
- support key slots properly for our usage.
75
-
76
- h1. Installation
77
-
78
- The easiest way to install arver is by gem
79
-
80
- sudo gem install arver
81
-
82
- This will install all required dependecies automatically. If your distributions
83
- contains an arver package we recommend installation by your package manager.
84
-
85
- The following ruby gems are required for arver:
86
-
87
- * gpgme 2
88
- * activesupport 2
89
- * escape
90
-
91
- For development you will need the following additional gems:
92
-
93
- * rake
94
- * cucumber
95
- * rspec
96
91
 
97
92
  h1. License
98
93
 
data/lib/arver/cli.rb CHANGED
@@ -27,16 +27,13 @@ module Arver
27
27
  Options:
28
28
  BANNER
29
29
  opts.on("-c", "--config-dir PATH", String,
30
- "Path to config dir.",
31
- "Default: .arver") { |arg| options[:config_dir] = arg }
30
+ "Path to arverdata dir.") { |arg| options[:config_dir] = arg }
32
31
  opts.on("-u", "--user NAME", String,
33
- "Username." ) { |arg| options[:user] = arg }
32
+ "Your username." ) { |arg| options[:user] = arg }
34
33
  opts.on("-h", "--help",
35
34
  "Show this help message.") { Arver::Log.write opts; return }
36
- opts.on("--dry-run",
37
- "Test your command.") { options[:dry_run] = true }
38
35
  opts.on("--ask-password",
39
- "Ask for Password when --add-user.") { options[:ask_password] = true }
36
+ "Ask for an existing LUKS password when adding a new user.") { options[:ask_password] = true }
40
37
  opts.on("-t", "--trust-all",
41
38
  "Use untrusted GPG Keys.") { options[:trust_all] = true }
42
39
  opts.on("--force",
@@ -47,33 +44,35 @@ module Arver
47
44
  "Verbose") { Arver::Log.level( Arver::LogLevels::Debug ) }
48
45
  opts.on("--vv",
49
46
  "Max Verbose") { Arver::Log.level( Arver::LogLevels::Trace ) }
50
- opts.on( "-l", "--list-targets",
51
- "List targets." ) { options[:action] = :list; }
52
- opts.on( "-g", "--garbage-collect",
53
- "Expunge old keys." ) { options[:action] = :gc; }
54
- opts.on( "-k TARGET", "--keys TARGET", String,
55
- "List local keys for this target.") { |arg| options[:argument][:target] = arg; options[:action] = :key_info; }
47
+ opts.on("--dry-run",
48
+ "Test your command.") { options[:dry_run] = true }
56
49
  opts.on("--test-mode",
57
50
  "Test mode (internal use)") { options[:test_mode] = true }
58
51
  opts.separator "Targets:"
59
52
  opts.on(
60
- " Possible Paths are: 'Group', 'Host', 'Device', 'Host/Device',\n"+
61
- " 'Group/Host/Device' or 'ALL'.\n"+
62
- " Multiple Parameters can be given as comma separated list.\n"+
63
- " Ambigues Target parameters will not be executed." )
53
+ " Possible targets are: '<Group>', '<Host>', '<Disk>', '<Host>/<Device>',\n"+
54
+ " '<Group>/<Host>/<Disk>' or 'ALL'.\n"+
55
+ " Multiple parameters can be given as comma separated list.\n"+
56
+ " Ambigues targets yield an error." )
64
57
  opts.separator "Actions:"
65
- opts.on_tail( "--create TARGET", String,
66
- "Create new arver partition on Target." ) { |arg| options[:argument][:target] = arg; options[:action] = :create; }
67
58
  opts.on_tail( "-o TARGET", "--open TARGET", String,
68
59
  "Open target." ) { |arg| options[:argument][:target] = arg; options[:action] = :open; }
69
60
  opts.on_tail( "-c TARGET", "--close TARGET", String,
70
61
  "Close target." ) { |arg| options[:argument][:target] = arg; options[:action] = :close; }
62
+ opts.on_tail( "--create TARGET", String,
63
+ "Create new arver partition on the target." ) { |arg| options[:argument][:target] = arg; options[:action] = :create; }
71
64
  opts.on_tail( "-a USER TARGET", "--add-user USER TARGET", String,
72
65
  "Add a user to target.") { |user| options[:action] = :adduser; options[:argument][:user] = user; }
73
66
  opts.on_tail( "-d USER TARGET", "--del-user USER TARGET", String,
74
67
  "Remove a user from target.") { |user| options[:action] = :deluser; options[:argument][:user] = user; }
68
+ opts.on_tail( "-g", "--garbage-collect",
69
+ "Expunge old keys." ) { options[:action] = :gc; }
70
+ opts.on_tail( "-k TARGET", "--keys TARGET", String,
71
+ "List local keys for this target.") { |arg| options[:argument][:target] = arg; options[:action] = :key_info; }
75
72
  opts.on_tail( "-i TARGET", "--info TARGET", String,
76
73
  "LUKS info about a target.") { |arg| options[:argument][:target] = arg; options[:action] = :info; }
74
+ opts.on_tail( "-l", "--list-targets",
75
+ "List targets." ) { options[:action] = :list; }
77
76
 
78
77
  begin
79
78
  opts.parse!(arguments)
data/lib/arver/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Arver
2
- VERSION = '0.0.5'
2
+ VERSION = '0.1.0'
3
3
  end
data/man/arver.5 CHANGED
@@ -10,8 +10,7 @@
10
10
  .
11
11
  .nf
12
12
 
13
- arver [\-u user] [\-c arverdata] [OPTIONS] \-t TARGET ACTION
14
- arver [\-u user] [\-c arverdata] [OPTIONS] ACTION
13
+ arver [\-u user] [\-c arverdata] [OPTIONS] ACTION [USER] [TARGET]
15
14
  .
16
15
  .fi
17
16
  .
@@ -26,12 +25,15 @@ There are some generic command line options:
26
25
  .
27
26
  .TP
28
27
  \fB\-u USER\fR, \fB\-\-user USER\fR
29
- By default \fBarver\fR will read \fB~/\.arver\fR to get your username\. Using \fB\-u USER\fR you can override or specify it aswell\.
28
+ By default \fBarver\fR will read \fB~/\.arver\fR to get your username\. Using \fB\-u USER\fR you can override it\.
30
29
  .
31
30
  .TP
32
31
  \fB\-c PATH\fR, \fB\-\-config\-dir PATH\fR
33
32
  By default \fBarver\fR will assume your data storage in \fB~/\.arverdata\fR\. However, if you have multiple data storage or you want to put it to a different location you can use the \fB\-c PATH\fR option\.
34
33
  .
34
+ .P
35
+ For more options see \fBarver \-h\fR
36
+ .
35
37
  .SH "ACTIONS"
36
38
  The following actions are supported:
37
39
  .
@@ -91,7 +93,7 @@ But the TARGET option accepts also partial names and lists\. E\.g
91
93
  .
92
94
  .nf
93
95
 
94
- \-t location1,location2/host2,host4,disk3
96
+ location1,location2/host2,host4,disk3
95
97
  .
96
98
  .fi
97
99
  .
@@ -423,6 +425,9 @@ If you use a version controll system to store your \fBarverdata\fR you should do
423
425
  \fBcryptsetup\fR(8)\. \fBgnupg\fR(7)\.
424
426
  .
425
427
  .P
428
+ Arver description: \fIhttps://tech\.immerda\.ch/2011/08/arver\-distributed\-luks\-key\-management/\fR
429
+ .
430
+ .P
426
431
  Arver project site: \fIhttps://git\.codecoop\.org/projects/arver/\fR
427
432
  .
428
433
  .P
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arver
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -15,7 +15,7 @@ date: 2012-04-30 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: gpgme
18
- requirement: &17808380 !ruby/object:Gem::Requirement
18
+ requirement: &12106580 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ! '>='
@@ -23,10 +23,10 @@ dependencies:
23
23
  version: 2.0.0
24
24
  type: :runtime
25
25
  prerelease: false
26
- version_requirements: *17808380
26
+ version_requirements: *12106580
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: escape
29
- requirement: &17807680 !ruby/object:Gem::Requirement
29
+ requirement: &12105920 !ruby/object:Gem::Requirement
30
30
  none: false
31
31
  requirements:
32
32
  - - ! '>='
@@ -34,10 +34,10 @@ dependencies:
34
34
  version: 0.0.2
35
35
  type: :runtime
36
36
  prerelease: false
37
- version_requirements: *17807680
37
+ version_requirements: *12105920
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: activesupport
40
- requirement: &17807020 !ruby/object:Gem::Requirement
40
+ requirement: &12105360 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
43
  - - <
@@ -45,10 +45,10 @@ dependencies:
45
45
  version: 3.0.0
46
46
  type: :runtime
47
47
  prerelease: false
48
- version_requirements: *17807020
48
+ version_requirements: *12105360
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: cucumber
51
- requirement: &17806360 !ruby/object:Gem::Requirement
51
+ requirement: &12104740 !ruby/object:Gem::Requirement
52
52
  none: false
53
53
  requirements:
54
54
  - - ! '>='
@@ -56,10 +56,10 @@ dependencies:
56
56
  version: 0.10.2
57
57
  type: :development
58
58
  prerelease: false
59
- version_requirements: *17806360
59
+ version_requirements: *12104740
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: rspec
62
- requirement: &17805500 !ruby/object:Gem::Requirement
62
+ requirement: &12104120 !ruby/object:Gem::Requirement
63
63
  none: false
64
64
  requirements:
65
65
  - - ! '>='
@@ -67,10 +67,10 @@ dependencies:
67
67
  version: 2.5.0
68
68
  type: :development
69
69
  prerelease: false
70
- version_requirements: *17805500
70
+ version_requirements: *12104120
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: rake
73
- requirement: &17803600 !ruby/object:Gem::Requirement
73
+ requirement: &12103560 !ruby/object:Gem::Requirement
74
74
  none: false
75
75
  requirements:
76
76
  - - ! '>='
@@ -78,7 +78,7 @@ dependencies:
78
78
  version: 0.9.2
79
79
  type: :development
80
80
  prerelease: false
81
- version_requirements: *17803600
81
+ version_requirements: *12103560
82
82
  description: Arver helps you to manage a large amount of crypted devices easily and
83
83
  safe amongst a certain amount of members
84
84
  email: arver@lists.immerda.ch