Access callback for blocks
The array returned from the implementations of hook_block_info() doesn't contain a property equivalent to the access callback for the menus. If you have a module that implements a block, then you can implement hook_block_view() using code that checks if the user has a specific permission. The following code is used from a Drupal module; as you see the block is "rendered" only when the user has the "access content" permission.

case 'recent':
  if (user_access('access content')) {
    $block['subject'] = t('Recent content');
    if ($nodes = node_get_recent(variable_get('node_recent_block_count', 10))) {
      $block['content'] = array(
        '#theme' =&gt; 'node_recent_block', 
        '#nodes' =&gt; $nodes,
      );
    }
    else {
      $block['content'] = t('No content available.');
    }
  }
  break;


You can use similar code, but checking a different permission, even a custom one your module uses for checking if the user can see the block.